首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AppEngine中的异步请求

AppEngine中的异步请求
EN

Stack Overflow用户
提问于 2016-01-27 07:05:39
回答 1查看 1.2K关注 0票数 1

我正在构建一个应用程序,本质上是这样做的:

  • 让用户输入某些参数。
  • 将这些params传递到后端,并根据这些params开始一个任务。
  • 当任务完成后,用户将重定向到另一个显示任务结果的页面。

这里的问题是,这项任务预计要花费相当长的时间。因此,我希望请求是异步的。appengine允许这样做吗?

如果没有,我有什么选择?我在查看任务队列的文档。虽然它满足了我所要做的部分工作,但是我不太清楚队列是如何在任务完成时通知客户机的,这样就可以启动重定向。

此外,如果任务的结果必须返回到调用客户端本身,怎么办?这有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-27 07:53:56

您不能(不应该真的)等待完成,GAE不是为此而设计的。只需启动任务,获得一个任务ID (唯一,将其保存在应用程序中),并在响应启动请求时将ID发送回客户端。

客户机可以通过轮询(以合理的速度)或简单地按需检查状态页(您可以使用ID来找到正确的任务)。你甚至可以在页面上添加一个进度/ETA信息,如果你愿意的话,沿着这条路走下去。

任务完成后,可以将客户端的下一个状态检查请求重定向到结果页。

这个Q&A可能也有帮助,这是一个非常类似的场景,只使用延迟库:如何从中的延迟任务返回数据

更新:

任务队列比延迟库更好,延迟的功能可以使用可选的countdowneta参数到taskqueue.add()

  • 倒计时默认为零。如果您指定了eta,则不要指定此参数。
  • eta --指定任务应该运行的绝对最早时间的datetime.datetime。如果指定了倒计时参数,则无法指定此参数。这个参数可以是时区感知的,也可以是时区天真的,也可以设置为过去的某个时间。如果参数设置为None,则默认值为“现在”。对于拉出任务,任何工作人员都不能在eta参数所指示的时间之前租用该任务。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35030799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档