我有一个Google App Engine应用程序,可以对远程API执行大约30-50次调用。每次通话大约需要一秒钟,因此整个操作可能需要一分钟。目前,我在我的站点的post()函数内的循环中执行此操作,因此在整个操作完成之前不会打印响应。毋庸置疑,该应用目前还不是很有用。
我想要做的是在操作开始后立即打印响应,然后在每个单独的API调用完成时更新它。我怎么做到这一点?在桌面应用程序上,我将启动一个定期更新前端的工作线程。 Google App Engine中是否有类似的机制?
我搜索了“进度条”和“谷歌应用引擎”,但大多数结果来自想要监控上传文件进度的人。我的情况不同:在服务器上执行耗时的任务,因此客户端无法监控其进度。 This guy是我能找到的最接近的东西,但他是用Java工作的。
答案 0 :(得分:3)
您可以立即从帖子中返回,并执行以下两项操作之一:
答案 1 :(得分:3)
答案 2 :(得分:0)
简短版本:使用在操作过程中写入内存缓存密钥的任务队列。然后,您的页面可以使用通道API,也可以反复轮询服务器以获取进度报告。
长版:在你的帖子中,你将大工作委托给一项任务。该任务将定期更新驻留在内存缓存中的密钥。如果您没有时间学习频道API,您可以使帖子返回的页面定期获取应用程序中的某些URL,该URL会根据内存缓存数据返回进度报告,然后您可以更新进度条。作业完成后,您的脚本可以转到结果页面。
如果您有时间,学习Channel API是值得的。在这种情况下,任务将接收通道令牌,以便它可以与页面中的JavaScript通道客户端进行通信而无需轮询。