谷歌应用程序引擎中的Cron工作

时间:2015-02-12 08:24:58

标签: python google-app-engine cron

我编写了一个Python程序,用于将内容发布到Internet.there是一个名为send(x)的函数,x是我的帖子列表的第x条记录。我想调用函数如send(0),send( 1),....,速率约为5分钟/ post。如何通过使用cron配置来实现此任务?还是任务队列?

2 个答案:

答案 0 :(得分:1)

我想我可以考虑在这里使用deferred.defer

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

现在你只需要设法调用此方法一次(例如从处理程序),它将每隔5分钟调用send一个递增的值。在这一切之下,它使用TaskQueue API和pickling来为延迟任务提供一个非常简单的界面。整齐。

当然,永久地调用它似乎有点奇怪,但添加逻辑来终止延迟调用序列并不会太难。


您的另一个选择是保留数据存储区中的值并使用cron ...它需要更多工作(并且需要db.Modelndb.Model才能真正用于一个实体),但在一天结束时,它仍然可能不那么难实现。

答案 1 :(得分:-1)

你需要两者。首先,您可以将以下内容添加到cron.yaml文件中:

  • description:这里的任务描述 url:/ tasks / send-updates 时间表:每15分钟

然后在你的router.py中你需要像

这样的东西

webapp2.Route( '/任务/发送-更新',               'handlers.tasks.task_manager.SendUpdates'),

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

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

[1] https://cloud.google.com/appengine/docs/python/config/cron