Compute Engine:URLFetch在此环境中不可用

时间:2018-10-11 10:00:36

标签: python google-app-engine google-cloud-storage google-compute-engine

我正在尝试将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在此环境中不可用。”

有人可以帮助我吗?谢谢您的宝贵时间!

1 个答案:

答案 0 :(得分:3)

我解决了问题...

当我使用此导入时:

from requests_toolbelt.adapters import appengine
appengine.monkeypatch()

所有http请求都尝试使用URLFetch,它在GCE中会产生问题。 只有我需要删除这两行,并且一切正常。

感谢您的时间! GDJ