AppEnginePlatformWarning:urllib3在Google App Engine沙箱而不是套接字上使用URLFetch

问题描述 投票:4回答:3

我在app引擎上使用flask来制作Slack机器人时出现此错误。每当我从Slackbot发送POST请求时都会发生这种情况。

不幸的是,错误中提供的url是一个死链接。如何使用套接字而不是URLFetch?

/base/data/home/apps/[REDACTED]/lib/requests/packages/urllib3/contrib/appengine.py:115:AppEnginePlatformWarning:urllib3正在使用Google App Engine沙箱上的URLFetch而不是套接字。要直接使用套接字而不是URLFetch,请参阅https://urllib3.readthedocs.io/en/latest/contrib.html

google-app-engine flask slack-api
3个回答
7
投票

Google's Sockets documentation所详述,可以通过设置GAE_USE_SOCKETS_HTTPLIB环境变量来使用套接字。此功能似乎仅适用于付费应用,并会影响结算。

虽然您发布的错误在App Engine中记录为错误,但this thread建议(请参阅回复#8)该错误实际上意味着警告,文本“AppEnginePlatformWarning”似乎无论如何都会提示。

关于appengine.py的source page的评论栏也很有启发性。

您没有发布有关您的实施的任何信息,但是在Google App Engine标准版using URLFetch via the AppEngineManager should be just fine上,尽管您会收到错误消息。


2
投票

您可以使用以下内容来沉默:

import warnings
import urllib3.contrib.appengine

warnings.filterwarnings('ignore', r'urllib3 is using URLFetch', urllib3.contrib.appengine.AppEnginePlatformWarning)

1
投票

对我来说,事实证明我的项目中存在requests_toolbelt依赖是问题:它以某种方式迫使请求库使用urllib3,这需要URLFetch存在,否则它raises an AppEnginePlatformError。正如在the app engine docs中所建议的那样,使用requests_toolbelt修补猴子请求强制前者使用URLFetch,这是GAE在Python 3运行时中没有的longer supported

解决方案是从我的requests_toolbelt文件中删除requirements.txt

© www.soinside.com 2019 - 2024. All rights reserved.