我在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'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上,尽管您会收到错误消息。
您可以使用以下内容来沉默:
import warnings
import urllib3.contrib.appengine
warnings.filterwarnings('ignore', r'urllib3 is using URLFetch', urllib3.contrib.appengine.AppEnginePlatformWarning)
对我来说,事实证明我的项目中存在requests_toolbelt依赖是问题:它以某种方式迫使请求库使用urllib3,这需要URLFetch存在,否则它raises an AppEnginePlatformError。正如在the app engine docs中所建议的那样,使用requests_toolbelt修补猴子请求强制前者使用URLFetch,这是GAE在Python 3运行时中没有的longer supported。
解决方案是从我的requests_toolbelt
文件中删除requirements.txt