我正在尝试将python服务器放置在Google Compute Engine上的VM中,该VM服务器的持续时间超过10分钟(在App Engine中服务的时间限制)。我给你我的代码和输出:
from google.cloud import storage as gcs
from requests_toolbelt.adapters import appengine
appengine.monkeypatch()
def my_function(filename, stringdata):
# init client gcp
gcs_client = gcs.Client()
bucket = gcs_client.get_bucket(config["cloud_storage_segment"])
upload_blob_from_string(bucket, filename, stringdata)
输出显示以下内容:
文件 “ /home/guillermo.diaz/.local/lib/python2.7/site-packages/flask/app.py”, 第1994行,在致电 返回self.wsgi_app(环境,start_response)
文件“ /home/user/.local/lib/python2.7/site-packages/flask/app.py”, 第1985行,在wsgi_app中 响应= self.handle_exception(e)
文件“ /home/user/.local/lib/python2.7/site-packages/flask/app.py”, 第1540行,在handle_exception中 重新提高(exc_type,exc_value,tb)
文件“ /home/user/.local/lib/python2.7/site-packages/flask/app.py”, 第1982行,在wsgi_app中 响应= self.full_dispatch_request()
文件“ /home/user/.local/lib/python2.7/site-packages/flask/app.py”, 第1614行,在full_dispatch_request中 rv = self.handle_user_exception(e)
文件“ /home/user/.local/lib/python2.7/site-packages/flask/app.py”, 第1517行,在handle_user_exception中 重新提高(exc_type,exc_value,tb)
文件“ /home/user/.local/lib/python2.7/site-packages/flask/app.py”, 第1612行,在full_dispatch_request中 rv = self.dispatch_request()
文件“ /home/user/.local/lib/python2.7/site-packages/flask/app.py”, 第1598行,在dispatch_request中 返回self.view_functionsrule.endpoint
文件“ /home/user/my_module/main.py”, 第50行,在my_function中 桶= gcs_client.get_bucket(config [“ cloud_storage_segment”])
文件 “ /home/user/.local/lib/python2.7/site-packages/google/cloud/storage/client.py”, 第225行,位于get_bucket中 bucket.reload(client = self)
文件“ /home/user/.local/lib/python2.7/site-packages/google/cloud/storage/_helpers.py”, 第108行,正在重新加载 _target_object = self)
文件“ /home/user/.local/lib/python2.7/site-packages/google/cloud/_http.py”, api_request中的第290行 标头=标头,target_object = _target_object)
文件“ /home/user/.local/lib/python2.7/site-packages/google/cloud/_http.py”, _make_request中的第183行 返回self._do_request(方法,URL,标题,数据,target_object)文件 “ /home/user/.local/lib/python2.7/site-packages/google/cloud/_http.py”, _do_request中的第211行 返回self.http.request(
文件“ /home/user/.local/lib/python2.7/site-packages/google/cloud/_http.py”, 第73行,位于http 返回self._client._http
文件“ /home/user/.local/lib/python2.7/site-packages/google/cloud/client.py”, _http中的第151行 self._credentials))
文件“ /home/user/.local/lib/python2.7/site-packages/google/auth/transport/requests.py”, 第161行,在 init 超级(AuthorizedSession,自我)。初始化(**假人)
文件“ /home/user/.local/lib/python2.7/site-packages/requests/sessions.py”, 第396行, init self.mount('https://',HTTPAdapter())
文件“ /home/user/.local/lib/python2.7/site-packages/requests_toolbelt/adapters/appengine.py”, 第79行,初始化 超级(AppEngineAdapter,self)。初始化(* args,** kwargs)
文件“ /home/user/.local/lib/python2.7/site-packages/requests_toolbelt/adapters/appengine.py”, 第60行,初始化 super(AppEngineMROHack,self)。初始化(* args,** kwargs)
文件“ /home/user/.local/lib/python2.7/site-packages/requests/adapters.py”, 第127行,在 init self.init_poolmanager(pool_connections,pool_maxsize,block = pool_block)
文件 “ /home/user/.local/lib/python2.7/site-packages/requests_toolbelt/adapters/appengine.py”, init_poolmanager中的第82行 self.poolmanager = _AppEnginePoolManager(self._validate_certificate)
文件“ /home/user/.local/lib/python2.7/site-packages/requests_toolbelt/adapters/appengine.py”, 第122行,初始化 validate_certificate = validate_certificate)
文件“ /home/user/.local/lib/python2.7/site-packages/urllib3/contrib/appengine.py”, 第103行, init “ URLFetch在此环境中不可用。”
有人可以帮助我吗?谢谢您的宝贵时间!
答案 0 :(得分:3)
我解决了问题...
当我使用此导入时:
from requests_toolbelt.adapters import appengine
appengine.monkeypatch()
所有http请求都尝试使用URLFetch,它在GCE中会产生问题。 只有我需要删除这两行,并且一切正常。
感谢您的时间! GDJ