我怎样才能 运行 在 django 中只执行一次 celery 任务?

how can I run celery task only once in django?

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 创建一个在特定时间只运行一次的函数吗?请帮忙!!! 提前致谢!

您需要更改 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

如果您使用的是Django-Celery-Beat, it has the ability to create tasks that run only once at a specific date/time using the ClockedSchedule型号。由于某种原因它不在文档中,但您可以通过 Django Admin 轻松配置它。