google-app-engine - 为什么我看到 Deferred 中的 Deadline 超出了 HTTPException?
问题描述
defer
从App Engine 上的(仅)内部发出 HTTP 请求时,为什么我会看到“已超过截止日期”HTTPException ?当我使用 urllib2(见下文)发出请求时,我设置了超时(540 秒),但我的请求在 180 秒左右超时。使用 Cloud SDK 和 Djangae,同样的请求在本地也能正常工作。
req = urllib2.Request(
settings.ENDPOINT,
json_data,
{
'Content-Type': 'application/json',
'X-API-KEY': settings.SOME_KEY,
}
)
response = urllib2.urlopen(req, timeout=settings.SOME_TIMEOUT)
更新:
我也尝试过将全局google.appengine.api.urlfetch
超时设置为 540,set_default_fetch_deadline
但没有成功。
解决方案
我的代码中一直收到这些警告:
/base/data/home/apps/s~my-project-id/version-id/lib/urllib3/contrib/appengine.py:256:AppEnginePlatformWarning:URLFetch 不支持粒度超时设置,恢复为总或默认 URLFetch 超时.
可能会urllib2
遇到同样的问题,但根本不会像这样记录urllib3
警告
编辑:
我刚刚注意到您说您还尝试设置 urlfetch 的全局超时。Java 文档说
HTTP(S) 请求的最长截止时间为 60 秒
由于某种原因,python 文档中没有这种情况,但我的猜测是,无论您将超时设置为什么,您都会受到一些内部最大超时值的限制。
https://cloud.google.com/appengine/docs/standard/java/outbound-requests#request_timeouts
推荐阅读
- android - 如何处理巨大的 JSON 数组?
- flutter - 如何滚动到包含 Flutter 中展开项目的列中的 TextView?
- python - Python 3 TypeError:并非所有参数都在字符串格式化期间转换,列出问题
- objective-c - Xcode 10 错误 PrefixHeader.pch.gch' 不是有效的预编译 PCH 文件
- internals - Reasonml 地图不纯?
- php - 使用codeigniter框架时如何在cpanel中安装composer?
- workbox - 如何使用 workbox.streams 修复服务工作者中的 fetch 事件
- mongodb - 如何在 mongoDB 中处理 $project 中的多个 $lookup 和大量列
- jquery - 如何使用 jquery 在下拉选择更改时显示/隐藏标签
- google-app-engine - 如何设置 GCP App Engine 服务的服务名称