【问题标题】:how can I run celery task only once in django?如何在 django 中只运行一次 celery 任务?
【发布时间】:2020-07-25 09:36:56
【问题描述】:
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 创建一个在特定时间只运行一次的函数吗?请帮忙!!! 提前致谢!

【问题讨论】:

    标签: python django cron celery django-celery


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 不是每天,比如5:00只有一次,只有今天,不是明天等等,只有一次!有可能吗?
      • 啊,我明白了,这个链接可能会有所帮助。 stackoverflow.com/questions/41568305/…
      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 2020-06-30
      • 2017-07-10
      • 2014-03-17
      • 2019-08-21
      相关资源
      最近更新 更多