【问题标题】:Cron job in google application engine谷歌应用程序引擎中的 Cron 作业
【发布时间】:2015-02-12 16:35:12
【问题描述】:

我写了一个 Python 程序来把东西发布到互联网上。有一个函数叫做 send(x),其中 x 是我的帖子列表的第 x 条记录。我想调用 send(0)、send( 1),...., 大约 5 分钟/post.How 可以通过使用 cron 配置来实现这个任务?还是任务队列?

【问题讨论】:

    标签: python google-app-engine cron


    【解决方案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 这实际上只用于单个实体),但在归根结底,实施起来可能仍然没有那么难。

    【讨论】:

      【解决方案2】:

      两者都需要。首先你可以在你的 cron.yaml 文件中添加这样的东西:

      • description:此处的任务描述 网址:/任务/发送更新 时间表:每 15 分钟一次

      然后在你的 router.py 中你需要类似的东西

      webapp2.Route('/tasks/send-updates', 'handlers.tasks.task_manager.SendUpdates'),

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

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

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

      【讨论】:

        猜你喜欢
        • 2018-01-28
        • 2012-06-12
        • 2023-03-12
        • 2018-09-04
        • 2017-12-09
        • 2015-01-16
        • 2016-02-18
        • 2014-03-22
        • 2011-08-21
        相关资源
        最近更新 更多