【发布时间】:2023-06-13 00:33:01
【问题描述】:
我需要找到如何指定一种初始 celery 任务,它将以特殊定义的方式启动所有其他任务。这个初始任务应该在 celery 服务器启动时立即运行,并且永远不会再次运行。
【问题讨论】:
标签: python django celery django-celery
我需要找到如何指定一种初始 celery 任务,它将以特殊定义的方式启动所有其他任务。这个初始任务应该在 celery 服务器启动时立即运行,并且永远不会再次运行。
【问题讨论】:
标签: python django celery django-celery
我找到了这样做的方法。它有一个负面的方面 - 无法指定当前年份,并且任务将在一年之后再次运行。但通常服务器会更频繁地重启,然后是这段时间。
from celery.task import PeriodicTask
class InitialTasksStarter(PeriodicTask):
starttime = datetime.now() + timedelta(minutes=1)
run_every = crontab(month_of_year=starttime.month, day_of_month=starttime.day, hour=starttime.hour, minute=starttime.minute)
def run(self, **kwargs):
....
return True
【讨论】:
使用celeryd_after_setup 或celeryd_init 信号怎么样?
以下文档中的示例代码:
from celery.signals import celeryd_init
@celeryd_init.connect(sender='worker12@example.com')
def configure_worker12(conf=None, **kwargs):
...
【讨论】: