【发布时间】:2023-08-23 17:53:01
【问题描述】:
我有一个使用 apply_async 方法安排的任务(我们称之为 MainTask),该任务有一些验证可以触发另一个使用 eta 安排的任务(SecondaryTask)。
每次 MainTask 尝试使用 apply_async 方法调度 SecondaryTask 时,SecondaryTask 都会立即运行,覆盖 eta 参数。
如何使用eta 安排与“主任务”不同的任务并稍后执行?
下面是代码示例:
views.py
def function():
main_task.apply_async(eta=some_day)
tasks.py
@app.task(bind=True, name="main_task", autoretry_for=(Exception,), default_retry_delay=10, max_retries=3, queue='mail')
def main_task(self):
...
if something:
...
another_task.apply_async(eta=tomorrow)
@app.task(bind=True, name="another_task", autoretry_for=(Exception,), default_retry_delay=10, max_retries=3, queue='mail')
def another_task(self):
do_something()
我正在使用 Celery 4.4.6 顺便说一句
【问题讨论】:
标签: django celery django-celery celery-task