谷歌应用引擎

这个模块提供了一个池管理器,它使用google app engine的 URLFetch Service .

示例用法:

from urllib3 import PoolManager
from urllib3.contrib.appengine import AppEngineManager, is_appengine_sandbox

if is_appengine_sandbox():
    # AppEngineManager uses AppEngine's URLFetch API behind the scenes
    http = AppEngineManager()
else:
    # PoolManager uses a socket-level API behind the scenes
    http = PoolManager()

r = http.request('GET', 'https://google.com/')

limitations 到urlfetch服务,它可能不是应用程序的最佳选择。在谷歌应用程序引擎上使用urllib3有三个选项:

  1. 你可以使用 AppEngineManager 用urlfetch。在许多情况下,只要您的使用在限制范围内,urlfetch就具有成本效益。

  2. 你可以使用正常的 PoolManager 通过启用套接字。插座也有 limitations and restrictions 并且有比urlfetch更低的自由配额。要使用套接字,请确保在 app.yaml ::

    env_variables:
        GAE_USE_SOCKETS_HTTPLIB : 'true'
    

三。如果你正在使用 App Engine Flexible 你可以使用这个标准 PoolManager 没有任何配置或特殊环境变量。

class urllib3.contrib.appengine.AppEngineManager(headers=None, retries=None, validate_certificate=True, urlfetch_retries=True)

基类:urllib3.request.RequestMethods

谷歌应用引擎沙盒应用程序的连接管理器。

此管理器直接使用urlfetch服务,而不是使用模拟的httplib,并且受应用程序引擎文档中所述的urlfetch限制的约束 here .

值得注意的是,它将提高 AppEnginePlatformError 如果:
  • UrlFetch不可用。

  • 如果您尝试使用此应用程序引擎灵活,因为完全插座支持可用。

  • 如果请求大小超过10兆字节。

  • 如果响应大小大于32兆位字节。

  • 如果使用不支持的请求方法(如选项)。

除此之外,它还会引发正常的urllib3错误。

urlopen(method, url, body=None, headers=None, retries=None, redirect=True, timeout=<object object>, **response_kw)
exception urllib3.contrib.appengine.AppEnginePlatformError

基类:urllib3.exceptions.HTTPError

exception urllib3.contrib.appengine.AppEnginePlatformWarning

基类:urllib3.exceptions.HTTPWarning