我有两个要与Restful接口通信的App Engine应用程序实例。一旦其中一个的数据被更新,它将在第二个上调用一个Web钩子,它将为自己的系统检索数据的新副本。 在“ site1”中,我有: 通用标签

在'site2'上用于data_updated的处理程序中,我有: 通用标签

在两个站点之间传递的数据很少,但是我收到以下错误。我尝试将截止日期延长到10秒,但这仍然无法正常工作。 通用标签

谁能提供任何有关可能发生的情况的见解?

谢谢-理查德

有帮助吗?

解决方案 2

更改方法 来自 通用标签

通用标签

已修复了截止日期错误。

urlfetch文档

最后期限 等待来自服务器的响应的最长时间 远程主机(以秒为单位)。如果远程主机没有 在这段时间内做出响应,就会引发DownloadError。

等待请求所花费的时间不计入CPU配额 的要求。它确实计入请求计时器。如果应用 请求计时器在URL Fetch调用返回之前到期,该调用是 已取消。

请求处理程序的最后期限最长为60秒 任务队列和cron作业处理程序则需要10分钟。如果截止日期是 没有,截止日期设置为5秒。

其他提示

App Engine的urlfetch并不总是按预期运行,您需要大约10秒钟的时间来获取URL。假设您要获取的URL已启动并正在运行,那么您应该能够通过调用DeadlineExceededError来捕获from google.appengine.runtime import apiproxy_errors,然后使用except apiproxy_errors.DeadlineExceededError:将urlfetch调用包装在try / except块中。

相关答案此处

您是否尝试过使用curl手动查询URL(www.site2.com/data_updated和www.site1.com/get_new_data),或确保它们在时限内响应?即使需要传输的数据量很小,处理程序也会出现问题,导致返回结果的延迟。

这里传输的数据量不是问题,延迟是问题。

如果您正在与之交谈的应用通常需要10秒以上的时间才能响应,则您将不得不在另一个云平台(EC2等)上使用“代理回调”服务器。后端实例应该稍微放松urlfetch时间限制。

如果平均响应时间小于10秒,并且只有相对较少的失败,则重试几次。我希望为您着想,通话是幂等的(即重试不会产生不利影响)。如果不是这样,您也许可以在上面放上自己的图层-有点痛苦,但可以,这就是我们所做的。

J

GAE文档现在规定截止日期可以是60秒: 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top