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创建仅在特定时间运行一次的函数吗?请帮忙!!! 预先感谢!
答案 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轻松配置它。