googleappengin中的进度条

2024-04-16 23:03:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个googleappengine应用程序,可以对远程API执行大约30-50次调用。每次通话大约需要一秒钟,所以整个操作很容易需要一分钟。目前,我在我的站点的post()函数中执行此操作,因此在整个操作完成之前不会打印响应。不用说,这个应用目前还不是很好用。在

我想做的是在操作启动后立即打印响应,然后在每个单独的API调用完成时更新它。我要如何做到这一点?在桌面应用程序中,我只需启动一个工作线程,该线程将定期更新前端。谷歌应用引擎中有类似的机制吗?在

我在google上搜索“进度条”和“googleappengine”,但大多数结果都是来自那些想监视上传文件进度的人。我的情况不同:在服务器上执行耗时的任务,因此客户机无法监视其进度。This guy是我能找到的最接近的东西,但他用的是Java。在


Tags: 文件函数进度条引擎api应用程序远程站点
3条回答

短版本:使用任务队列,该队列在操作进行时写入memcache键。然后,您的页面可以使用channelapi或反复轮询服务器以获得进度报告。在

长版:在你的职位上,你把大任务委托给一项任务。该任务将定期更新驻留在memcache中的密钥。如果你没有时间学习channelapi,你可以让帖子返回的页面定期在应用程序中获取一些URL,根据memcache数据返回进度报告,然后更新进度条。作业完成后,脚本可以转到结果页。在

如果有时间,学习channelapi是值得的。在这种情况下,任务将接收通道令牌,这样它就可以在没有轮询的情况下与页面中的JavaScript通道客户端通信。在

你可以马上从岗位回来,做两件事之一:

  • 每隔一秒左右从你的客户那里进行一次投票,询问你的服务的状态
  • 使用channelapi将状态更新推送到客户端
  1. 使用http://code.google.com/appengine/docs/python/taskqueue将post逻辑发送到任务
  2. 更改进程的逻辑以设置状态(它可能正在使用memcache)
  3. 每10秒使用AJAX查询memcache状态,或多或少取决于您

相关问题 更多 >