区域 ID
REGION_ID
是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r
包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。
详细了解区域 ID。
本页面介绍了如何使用 URL Fetch 服务针对第二代运行时从 App Engine 应用发出 HTTP(S) 请求。
在按照本页上的说明进行操作前,我们建议您在使用 URL Fetch 服务之前使用语言惯用解决方案发出 HTTP(S) 请求。使用 URL Fetch 的主要用例是,您想要向其他 App Engine 应用发出 HTTP(S) 请求,并在该请求中声明应用的身份。
如需详细了解请求大小限制以及网址提取请求中发送的标头,请参阅出站请求。
发出 HTTP 请求
如需使用 URL Fetch 服务发出出站 HTTP(S) 请求,您必须明确 调用 urlfetch
库。
如需发出出站 HTTP 请求,您可以使用以下任何库:
- 为了提高代码的可移植性,请使用 Python 标准库
urllib.request
发出 HTTP 请求。 - 使用第三方库,例如
requests
。 明确调用
urlfetch
库并使用urlfetch.fetch
方法。
urllib.request
导入 urllib.request
库:
import urllib.request
接下来,使用 urllib.request
执行 GET
请求:
url = 'http://www.google.com/humans.txt'
try:
result = urllib.request.urlopen(url)
self.response.write(result.read())
except urllib.error.URLError:
logging.exception('Caught exception fetching url')
urlfetch
以下代码段演示了如何使用 urlfetch
执行基本 HTTP GET
请求。首先,从 App Engine SDK 中导入 urlfetch
库:
接下来,使用 urlfetch
执行 GET
请求:
以下代码段演示了如何执行更高级的请求,使用 urlfetch
通过 HTTP POST
请求从网络表单提交数据:
设置请求超时
您可以使用 urlfetch.set_default_fetch_deadline()
函数调整默认的截止时间。该函数将新的默认截止时间存储在线程局部变量中,因此需针对每个请求对其进行设置,例如在自定义中间件中。
停用重定向
如果您使用 URL Fetch,则默认情况下,URL Fetch 服务最多遵循五个重定向。这些重定向可能会将敏感信息(如授权标头)转发到重定向的目的地。如果应用不需要 HTTP 重定向,则建议您停用重定向。
如需指示 URL Fetch 服务不遵循重定向,请将 fetch
方法的 follow_redirects
参数设置为 False
。
发出 HTTPS 请求
如需发出 HTTPS 请求,请在调用 urlfetch.fetch()
方法时将 validate_certificate
参数设置为 true
。
发出异步请求
默认情况下,HTTP(S) 请求为同步请求。要发出异步请求,您的应用必须完成以下步骤:
- 使用
urlfetch.create_rpc()
创建新的 RPC 对象。在后续方法调用中,该对象表示异步调用。 - 调用
urlfetch.make_fetch_call()
发出请求。此方法将 RPC 对象和请求目标的网址作为参数。 - 调用 RPC 对象的
get_result()
方法。如果请求成功,该方法将返回结果对象;如果请求期间发生错误,则会引发异常。
以下代码段演示了如何从 Python 应用发出基本异步请求。首先,从 App Engine SDK 中导入 urlfetch
库:
接下来,使用 urlfetch
发出异步请求:
设置请求超时
如需为请求设置超时,请在创建 RPC 对象时设置 urlfetch.create_rpc()
方法的 deadline
参数。
使用回调函数
您可以为 RPC 对象定义回调函数。当您的应用对对象调用方法(例如 wait()
、checksuccess()
或 get_result()
)时,系统会调用该函数,从而使对象等待请求完成。
如需使用回调函数处理提取调用的结果,请执行以下步骤:
- 创建用于定义回调范围的辅助函数。
- 创建用于处理提取调用结果的处理程序函数。
- 将 RPC 对象的
callback
特性设置为辅助函数。
以下代码段演示了如何调用回调函数:
向其他 App Engine 应用发出请求
使用 URL Fetch 向另一个 App Engine 应用发出请求时,您的应用可以通过将标头 X-Appengine-Inbound-Appid
添加到请求中来声明其身份。
如果您指示 URL Fetch 服务不遵循重定向,则 App Engine 会自动将此标头添加到请求中。 如需有关如何停用重定向的指导,请参阅停用重定向。
后续步骤
参阅出站请求了解 URL Fetch 服务,例如在 URL Fetch 请求中发送的标头。