我正在构建一个应用程序,本质上是这样做的:
这里的问题是,这项任务预计要花费相当长的时间。因此,我希望请求是异步的。appengine允许这样做吗?
如果没有,我有什么选择?我在查看任务队列的文档。虽然它满足了我所要做的部分工作,但是我不太清楚队列是如何在任务完成时通知客户机的,这样就可以启动重定向。
此外,如果任务的结果必须返回到调用客户端本身,怎么办?这有可能吗?
发布于 2016-01-27 07:53:56
您不能(不应该真的)等待完成,GAE不是为此而设计的。只需启动任务,获得一个任务ID (唯一,将其保存在应用程序中),并在响应启动请求时将ID发送回客户端。
客户机可以通过轮询(以合理的速度)或简单地按需检查状态页(您可以使用ID来找到正确的任务)。你甚至可以在页面上添加一个进度/ETA信息,如果你愿意的话,沿着这条路走下去。
任务完成后,可以将客户端的下一个状态检查请求重定向到结果页。
这个Q&A可能也有帮助,这是一个非常类似的场景,只使用延迟库:如何从中的延迟任务返回数据
更新:
任务队列比延迟库更好,延迟的功能可以使用可选的countdown或eta参数到taskqueue.add()。
datetime.datetime。如果指定了倒计时参数,则无法指定此参数。这个参数可以是时区感知的,也可以是时区天真的,也可以设置为过去的某个时间。如果参数设置为None,则默认值为“现在”。对于拉出任务,任何工作人员都不能在eta参数所指示的时间之前租用该任务。https://stackoverflow.com/questions/35030799
复制相似问题