【问题标题】:How to run celery schedule instantly?如何立即运行芹菜时间表?
【发布时间】:2014-05-30 15:59:40
【问题描述】:

我有一个这样配置的芹菜时间表:

CELERYBEAT_SCHEDULE = {
    "runs-every-30-seconds": {
        "task": "tasks.refresh",
        "schedule": timedelta(hours=1)
    },
}

经过测试,我发现这个时间表是在 1 小时后开始的,但我想立即运行这个时间表,并在 1 小时后再次运行。

【问题讨论】:

    标签: python django celery celerybeat


    【解决方案1】:

    如果您的意思是在启动时,请在AppConfig.ready()(django 1.7 中的新功能)中执行:

    # my_app/__init__.py:
    
    class MyAppConfig(AppConfig):
        def ready(self):
            tasks.refresh.delay()
    

    另见:https://docs.djangoproject.com/en/1.7/ref/applications/#module-django.apps

    如果您只是为了测试而这样做,我宁愿直接调用/延迟任务而不是测试 celery 调度程序本身。

    【讨论】:

    • 我不知道为什么,但是我的任务运行了两次,第一次是我启动 django 服务器时,第二次是我用 beat 运行 celery worker 时
    猜你喜欢
    • 2015-05-11
    • 2016-06-13
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2011-10-13
    • 2017-05-24
    • 2018-12-26
    • 1970-01-01
    相关资源
    最近更新 更多