从浏览器轮询完成app引擎任务

时间:2014-01-23 13:30:12

标签: google-app-engine

我的谷歌应用引擎应用程序有时会因处理表单提交而导致截止日期超出错误,因为文件制作者数据库后端的来回非常繁琐,最终耗时超过1分钟。

我想通过使用appengine任务处理从表单发布的数据来改进这一点,而是立即呈现响应页面,例如“您的订单正在处理中,请稍等。”

有没有办法确定应用程序引擎任务何时在浏览器/客户端完成,以便我可以在订单完成时呈现“成功”页面?最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以通过以下几种方法解决此问题:

  • 任务队列有一个REST API,可用于获取任务的状态。请注意,这是一个实验性API。

  • 完成任务后,您可以更新包含任务详细信息的数据存储区实体。您可以公开任务状态Web服务(编写您自己的Web服务或更好地使用Google Cloud Endpoints)。在您的网页中,您可以使用计时器任务轮询状态并根据需要更新状态。

  • App Engine还支持Channel API,这是一种在服务器端更新时将通知推送到浏览器的好方法。因此,如果您不想定期轮询并发现浪费,特别是如果有很多用户,您可以查看Channel API

答案 1 :(得分:0)

使用JSON/REST任务队列。对于其他队列,你会发现麻烦。

  

GET / project / taskqueues / taskqueue / tasks / task获取指定的任务   一个TaskQueue。

设置任务名称,然后轮询队列以查看任务是否已完成等,并在客户端使用ajax执行此操作。

您可能也对pipeline api

感兴趣