Jam*_*son 5 python sockets google-app-engine python-requests
在 Google App Engine 标准环境中,如果您使用 urllib 发出 HTTPS 请求,您将收到一条消息,AppEnginePlatformWarning表明您正在使用 urlfetch 而不是套接字。
我发现这个警告很烦人,所以我禁用了它。
# 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)
我的问题是 - 有充分的理由切换到套接字吗?具体来说,使用 urlfetch 有什么问题?
使用 没有任何问题urlfetch,事实上,它是在 GAE 上发出出站 HTTP(S) 请求的推荐方法。从发出 HTTP(S) 请求(重点是requests我的相关注释):
App Engine 使用 URL 提取服务发出出站 HTTP(S) 请求。
有关 URL Fetch 服务的实现方式以及 URL Fetch 请求中发送哪些标头的详细信息,请参阅出站请求。
发出 HTTP 请求
要发出出站 HTTP 请求,请使用该
urlfetch.fetch方法。为了提高代码可移植性,您还可以使用 Python 标准库urllib、urllib2、 或httplib发出 HTTP 请求。当您在 App Engine 中使用这些库时,它们会使用 App Engine 的 URL 获取服务执行 HTTP 请求。您也可以使用第三方requests库,只要将其配置为使用 URLFetch 即可。
套接字支持在 GAE 中是有问题的,它带有相当长的限制和限制列表,请参阅套接字 Python API 概述,特别是限制和限制部分。
您看到的警告不是来自 GAE,而是来自requests您使用的第 3 方库,这就是我在上面引用中突出显示该注释的原因。恕我直言,在 GAE 上下文中简单地忽略/屏蔽警告是安全的。
| 归档时间: |
|
| 查看次数: |
443 次 |
| 最近记录: |