mak*_*asi 4 python google-app-engine python-requests
我的项目使用以下python库:
requests==2.18.4
requests-toolbelt==0.8.0
Run Code Online (Sandbox Code Playgroud)
并在main.py上调用它
requests_toolbelt.adapters.appengine.monkeypatch()
Run Code Online (Sandbox Code Playgroud)
使用请求库时,App引擎正在记录Google云端日志中的错误消息:
AppEnginePlatformWarning:urllib3在Google App Engine沙箱而不是套接字上使用URLFetch。要直接使用套接字而不是URLFetch,请参阅 https://urllib3.readthedocs.io/en/latest/reference/urllib3.contrib.html。
AppEnginePlatformWarning:URLFetch不支持精细的超时设置,恢复为总URLFetch超时或默认URLFetch超时。
但这实际上只是警告,我的代码可以按预期工作。但是此日志对我来说是有问题的,因为当我查看统计信息时,我不知道日志中是否确实存在错误。这就是为什么我必须以某种方式将其记录为警告。
这是一个stackoverflow答案。该答案指出,如果在GAE标准环境中显示此警告,则代码将正常工作。所以对我来说真的是警告。如何这样登录? AppEnginePlatformWarning:urllib3在Google App Engine沙箱而不是套接字上使用URLFetch
您可以使用logging.captureWarnings
函数执行此操作。
从文档:
此功能用于通过打开和关闭登录来捕获警告。
如果捕获为True,则警告模块发出的警告将重定向到日志记录系统。具体来说,将使用warnings.formatwarning()格式化警告,并将结果字符串以“警告”严重性记录到名为“ py.warnings”的记录器中。
如果capture为False,将停止将警告重定向到日志记录系统,并将警告重定向到其原始目的地(即,在调用captureWarnings(True)之前生效的警告)。
执行logging.captureWarnings(True)
中appengine_config.py
导致这些警告被记录为我警告。
另请参阅有关警告模块的文档。
这个问题包括以下代码片段,用于完全抑制消息:
# Use the App Engine Requests adapter. This makes sure that Requests uses
# URLFetch.
requests_toolbelt.adapters.appengine.monkeypatch()
# squelch warning
requests.packages.urllib3.disable_warnings(
requests.packages.urllib3.contrib.appengine.AppEnginePlatformWarning
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
174 次 |
最近记录: |