所以我在工作人员的POST命令中执行任务太长时间并且遇到DeadlineExceededErrors时出现问题。我开始使用Taskqueues,这部分现在很好用 - 没有更多Deadline错误。现在的问题是我的主页在任务队列完成之前“刷新”(self.redirect),因此新的细节不会自动显示,用户必须自己刷新,这很麻烦。对于解决此问题的最简单方法,您有什么建议吗?我的应用程序的高级概述如下:
1)主处理程序具有Get和Post - 获取写入html页面,该页面在队列中的任务完成后显示新值。它还有一个表单,用于向其Post部分提交查询。
Post部分将任务添加到taskqueue上,然后将self.redirect调用回主html页面。
2)Main Worker有一个Post命令 - 这是添加到队列中的内容。运行大约需要1-2分钟,然后使用新值更新ndb.Model元素。
返回Main Handler Get函数,ndb.Model元素调用其.query()函数以返回新值。
任何帮助或建议将不胜感激。谢谢!
答案 0 :(得分:1)
执行需要1-2分钟的任务不适合用户交互:用户不习惯等待那么久。通常,有三种方法可以解决此问题:
(a)提供刷新按钮。
(b)启动定时器,定期检查任务是否完成。此任务在任务完成时更新页面并停止。请记住,用户可能会离开启动任务的页面。
(c)以不同的方式提交任务结果(电子邮件或推送通知)。
答案 1 :(得分:0)
如果您的用户愿意等待那么久,您可以在自定义模块中提供这些请求,该模块没有时间限制。请参阅GAE文档中的模块。