有时,对于做很多事情的请求,Google AppEngine会返回错误。我一直在通过一些技巧处理这个问题:memcaching中间处理的数据,并再次请求页面。这通常有效,因为不必重新计算memcached数据并且请求及时完成。
然而......这个黑客需要看到错误,返回并再次点击。显然不够理想。
有什么建议吗?
inb4:“更好地优化您的流程”,“将您的页面拆分为子流程”,以及“使用任务队列”。
感谢您的任何想法。
修改 - 澄清: 漫长的等待请求是可以的,因为该功能是管理的。我基本上打算运行数据挖掘功能。我正在搜索我的数据存储区并修改一堆对象。我认为正确的答案是AppEngine可能不适合这个。我应该将数据导出到一台计算机,我可以自己运行这样的函数。似乎AppEngine真正用于满足更轻的处理需求。也许配额/定价模型应该提供增加处理超时和额外收费的选项。
答案 0 :(得分:1)
我一直在通过在客户端上构建自定义自动重试调度程序来处理类似的事情。每当对服务器的ajax调用失败时,客户端都将重试它。
如果您的网页是ajaxy,这非常有用。如果您的应用程序吐出整个HTML页面,那么您可以使用两个过程:首先发送一个只包含ajax请求的空页面。然后,当AppEngine收到该ajax请求时,它会输出您之前使用的相同HTML。如果ajax调用成功,则用结果填充DOM。如果失败,则重试一次。
答案 1 :(得分:1)
如果交互式用户请求达到了30秒的截止日期,那么您就会遇到更大的问题:您的用户几乎肯定放弃并离开了。
您可以做什么取决于您的代码正在做什么。通过批处理数据存储操作或通过更改数据建模方式来减少数据存储操作,可以对其进行优化;你可以将工作卸载到任务队列;对于URLFetches,您可以并行执行它们。告诉我们更多关于您正在做的事情,我们可以提供更具体的建议。