繁体   English   中英

在Django中手动运行celery计划的任务

[英]Manually running celery scheduled tasks within Django

在我的Django设置文件中,我看起来像这样:

CELERY_BEAT_SCHEDULE = {
    'my_task': {
        'task': 'tasks.my_task',
        'schedule': crontab(hour=4, minute=0),
        'kwargs': {'interval': 'hour', 'features': [], 'max_samples': 200,
                   'training_days': 90, 'force_update': False},
        'options': {'queue': 'my_queue'},
    },
}

我想做的是能够手动使此任务异步启动。 我知道的一种方法是:

task = settings.CELERY_BEAT_SCHEDULE['my_task']
tasks.my_task.apply_async(kwargs=task['kwargs'], queue=task['options']['queue'])

虽然这有效,但我的口味有点笨拙,我正在寻找更好的方法。

有没有办法找到芹菜对CELERY_BEAT_SCHEDULE定义的计划任务的解释并从那里手动运行它们?


到目前为止,我找到的最接近的是celery.task.control inspect().registered_tasks() ,但这似乎更多地是关于工人的,而不是计划的任务。

我有95%的把握确保没有遗漏这方面的重要方面,但我会给您一个机会。

如果您想异步运行特定任务但自己启动,那么您不仅可以执行your_task.delay()吗?

如果要手动运行所有计划的任务,只需从django.conf.settings解析CELERY_BEAT_SCHEDULE ,导入每个任务并在其上运行.delay()

编辑:您的示例中似乎正在做类似的事情。 您能否说出为什么不喜欢此解决方案?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM