代码之家  ›  专栏  ›  技术社区  ›  makkasi

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

  •  4
  • makkasi  · 技术社区  · 8 年前

    我的项目使用这些python库:

    requests==2.18.4
    requests-toolbelt==0.8.0
    

    并称之为主要。py公司

    requests_toolbelt.adapters.appengine.monkeypatch()
    

    当使用请求库时,应用引擎正在谷歌云日志中记录错误消息:

    引擎沙箱而不是插座。直接使用套接字而不是 URLFetch请参阅 https://urllib3.readthedocs.io/en/latest/reference/urllib3.contrib.html .

    AppEnginePlatformWarning:URLFetch不支持粒度超时 设置,还原为总或默认URLFetch超时。

    但这实际上只是一个警告,我的代码按预期工作。但是这个日志对我来说是有问题的,因为当我看到统计数据时,我不知道日志中是否真的有错误。这就是为什么我必须以某种方式将其记录为警告。

    这里有一个答案。这个答案表明,如果GAE标准环境中显示此警告,那么代码将正常工作。所以这对我来说是个警告。如何将其记录为日志? AppEnginePlatformWarning: urllib3 is using URLFetch on Google App Engine sandbox instead of sockets

    1 回复  |  直到 6 年前
        1
  •  5
  •   snakecharmerb    8 年前

    您可以使用 logging.captureWarnings 作用

    docs

    此功能用于通过登录来捕获警告 然后关闭。

    如果捕获为True,则由 warnings 模块将是 使用格式化 warnings.formatwarning() 和生成的字符串

    如果捕获为False,则将警告重定向到日志记录系统 将停止,警告将重定向到其原始位置 目的地(即captureWarnings(True)之前有效的目的地)为 已调用)。

    正在执行 logging.captureWarnings(True) 在里面 appengine_config.py

    另请参阅文档以了解 warnings 单元

    编辑:

    This question 包括此代码段,用于完全抑制消息:

    # 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
    )