【问题标题】:Error when connecting to Firebase from dev_appserver: VerifiedHTTPSConnection object has no attribute _tunnel_host从 dev_appserver 连接到 Firebase 时出错:VerifiedHTTPSConnection 对象没有属性 _tunnel_host
【发布时间】:2019-05-30 10:54:55
【问题描述】:

我正在本地运行一项服务,我打算在 GCP 中作为服务运行。我正在使用服务帐户 json 文件对 Firebase 进行身份验证。

from firebase_admin import credentials
from firebase_admin import db

cred = credentials.Certificate('./firebase-service-account.json')
firebase_admin.initialize_app(cred, {
    'databaseURL': 'https://XXXXXXXX.firebaseio.com/'
})

... ref.child(msg_id).set(data)

但是,当我尝试写入 Firebase 时,我看到以下错误:

AttributeError: 'VerifiedHTTPSConnection' object has no attribute 
'_tunnel_host'

我将粘贴下面的堆栈跟踪,以防它可以提供一些额外的清晰度:

File "/Users/karthig/Documents/coding/nocservice/query.py", line 42, in publish_results
ref.child(msg_id).set(data)
File "/Users/karthig/Documents/coding/nocservice/lib/firebase_admin/db.py", line 262, in set
self._client.request('put', self._add_suffix(), json=value, params='print=silent')
File "/Users/karthig/Documents/coding/nocservice/lib/firebase_admin/db.py", line 882, in request
return super(_Client, self).request(method, url, **kwargs)
File "/Users/karthig/Documents/coding/nocservice/lib/firebase_admin/_http_client.py", line 84, in request
resp = self._session.request(method, self._base_url + url, **kwargs)
File "/Users/karthig/Documents/coding/nocservice/lib/google/auth/transport/requests.py", line 198, in request
self._auth_request, method, url, request_headers)
File "/Users/karthig/Documents/coding/nocservice/lib/google/auth/credentials.py", line 122, in before_request
self.refresh(request)
File "/Users/karthig/Documents/coding/nocservice/lib/google/oauth2/service_account.py", line 322, in refresh
request, self._token_uri, assertion)
File "/Users/karthig/Documents/coding/nocservice/lib/google/oauth2/_client.py", line 145, in jwt_grant
response_data = _token_endpoint_request(request, token_uri, body)
File "/Users/karthig/Documents/coding/nocservice/lib/google/oauth2/_client.py", line 106, in _token_endpoint_request
method='POST', url=token_uri, headers=headers, body=body)
File "/Users/karthig/Documents/coding/nocservice/lib/google/auth/transport/requests.py", line 120, in __call__
**kwargs)
File "/Users/karthig/Documents/coding/nocservice/lib/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/Users/karthig/Documents/coding/nocservice/lib/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/Users/karthig/Documents/coding/nocservice/lib/requests/adapters.py", line 449, in send
timeout=timeout
File "/Users/karthig/Documents/coding/nocservice/lib/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/Users/karthig/Documents/coding/nocservice/lib/urllib3/connectionpool.py", line 343, in _make_request
self._validate_conn(conn)
File "/Users/karthig/Documents/coding/nocservice/lib/urllib3/connectionpool.py", line 839, in _validate_conn
conn.connect()
File "/Users/karthig/Documents/coding/nocservice/lib/urllib3/connection.py", line 304, in connect
if self._tunnel_host:
AttributeError: 'VerifiedHTTPSConnection' object has no attribute '_tunnel_host'
ERROR    2019-01-03 20:02:00,987 worker.py:45] An error occurred during a request.
ERROR    2019-01-03 20:02:00,988 worker.py:46] 'VerifiedHTTPSConnection' object has no attribute '_tunnel_host'

【问题讨论】:

  • 谢谢,约翰。我刚刚发现并准备发布它。已验证它可以像宣传的那样工作:)
  • 使用新代码发布您的解决方案。这将对其他人有所帮助。

标签: python firebase google-app-engine google-cloud-platform


【解决方案1】:

answer John posted above 的 cmets 部分已经回答了这个问题,但为了更清楚,只需在应用初始化的位置添加以下行:

from requests_toolbelt.adapters import appengine
appengine.monkeypatch()

就是这样。请参阅here 了解更多信息。

【讨论】:

    猜你喜欢
    • 2019-06-18
    • 1970-01-01
    • 2019-03-26
    • 2021-05-03
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2011-02-27
    相关资源
    最近更新 更多