我一直在研究如何使用GAE应用程序安排GET请求。具体来说,我希望我的应用程序在请求后1小时通过获取指向另一个应用程序API的其他URL来响应。
Deferred Tasks是处理此问题的方法吗?
我还发现任务有一个“eta”参数,指定最早的执行时间。这可能比“_countdown”更受欢迎吗?
或调查Cron工作?这些GET请求不会定期发生,所以我不知道Cron的工作是否合适。
谢谢!如有必要,请帮我澄清。
答案 0 :(得分:2)
是的,这是一个很好的方法,您需要做的就是在延期通话中设置_countdown
,这是您要等待执行此任务的秒数。
来自docs:
的示例deferred.defer(do_something_expensive, _countdown=3600, _queue="myqueue")
或者您可以简单地使用Task API,您可以在其中设置所有不同参数,以确定何时以及如何执行此任务。无论您最喜欢什么,都可以使用eta
或countdown
,从GAE角度来看,它完全相同。
答案 1 :(得分:-1)
只要您不想要第二个准确度(比如精确度)。我会将请求添加到实现请求队列的数据存储区。然后每分钟运行一次cron作业,查找为该时间段安排的请求。然后我会提交一个任务来执行请求。为任务命名,这样您就不可能重新提交相同的任务。任务可以重试几次(如果有错误),那么您可以在队列中将请求标记为已完成。
这样您就可以处理任意数量的计划请求。你最终没有成千上万的任务。您可以知道请求是否会运行,何时运行等...