假设我在tasks.py中有以下功能:
def func():
tasks = []
myArray=range(1,100000)
x_tasks = [add(i,i+1) for i in myArray]
tasks.append(group(x_tasks))
tasks.append(divide(400,20))
task = chain(*tasks)
task()
添加和划分是两个简单的功能。 如您所知,拥有组链会产生chord_unlock任务。我想知道如何更改其设置,如何更改default_retry_delay?对于其他函数,如加法和除法,我们可以在他们的装饰器中执行此操作,如:
@shared_task(default_retry_delay=240)
def add(x,y):
return x+y
但我不知道如何更改使用组链隐式创建的chord_unlock任务的设置。
答案 0 :(得分:0)
解决! 我需要使用从celery创建的app实例,如下所示:
import os
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'annotate.settings')
app = Celery('hawkeye')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
app.tasks['celery.chord_unlock'].default_retry_delay = 300
app.tasks['celery.chord_unlock'].max_retries = None
事实上,app.tasks
是一个包含所有任务的字典,通过它我们可以更改其设置。