Python 谷歌应用引擎中的Cron作业

Python 谷歌应用引擎中的Cron作业,python,google-app-engine,cron,Python,Google App Engine,Cron,我编写了一个Python程序将内容发布到Internet。有一个函数名为send(x),x是我发布列表的第x个记录。我想调用诸如send(0)、send(1)等函数,速率约为5分钟/次。如何使用cron配置实现此任务?还是任务队列?两者都需要。首先,您可以向cron.yaml文件中添加如下内容: 描述:此处为任务描述 url:/tasks/发送更新 时间表:每15分钟 然后在router.py中,您需要 webapp2.Route(“/tasks/send updates”, “handle

我编写了一个Python程序将内容发布到Internet。有一个函数名为send(x),x是我发布列表的第x个记录。我想调用诸如send(0)、send(1)等函数,速率约为5分钟/次。如何使用cron配置实现此任务?还是任务队列?

两者都需要。首先,您可以向cron.yaml文件中添加如下内容:

  • 描述:此处为任务描述 url:/tasks/发送更新 时间表:每15分钟
然后在router.py中,您需要

webapp2.Route(“/tasks/send updates”, “handlers.tasks.task_manager.SendUpdates”)

最后,您必须在handlers/tasks/task_manager.py中实现新的处理程序(SendUpdates)

我建议研究[1]中给出的文件


(1)

< P>我想我可以考虑在这里使用。

现在您只需要设法调用此方法一次(例如,从处理程序调用),它将每隔5分钟以递增的值调用
send
。在这一切的背后,它使用TaskQueue API和pickling为延迟的任务提供了一个非常简单的接口。整洁

当然,永远调用这个似乎有点奇怪,但是添加逻辑来终止延迟调用的序列并不太难


您的另一个选择是将值保留在数据存储中并使用cron。。。这需要做更多的工作(并且需要一个真正只用于单个实体的
db.Model
ndb.Model
),但最终,实现起来可能还没有那么困难

def send_wrapper(value):
    send(value)
    deferred.defer(send_wrapper, value + 1, _countdown=5*60)