如何在Django中仅运行一次celery任务?

时间:2020-04-12 20:14:58

标签: python django cron celery django-celery

from __future__ import absolute_import, unicode_literals

from celery import shared_task
from celery.task import periodic_task
from celery.schedules import crontab
from datetime import timedelta



@periodic_task(run_every=(crontab(minute='*/1')), name='greeting_task')
def greeting_task():
    print('hello Dias!')

我可以使用crontab创建仅在特定时间运行一次的函数吗?请帮忙!!! 预先感谢!

2 个答案:

答案 0 :(得分:0)

您需要更改crontab的参数。

示例:如果您希望任务每天凌晨5点运行一次:

@periodic_task(run_every=(crontab(minute='0', hour='5')), name='greeting_task')
def greeting_task():
    print('hello Dias!')

crontab(minute='*/1')将在每分钟运行一次任务。在这里阅读有关crontab语法的信息:https://en.wikipedia.org/wiki/Cron

答案 1 :(得分:0)

如果您使用的是Django-Celery-Beat,则可以使用ClockedSchedule模型创建在特定日期/时间仅运行一次 的任务。由于某种原因它不在文档中,但是您可以通过Django Admin轻松配置它。

相关问题