如何将AppEnginePlatformWarning记录为警告而不是错误

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

sna*_*erb 5

您可以使用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)