Python 更改Django中组的芹菜链的设置

Python 更改Django中组的芹菜链的设置,python,django,celery,multitasking,Python,Django,Celery,Multitasking,假设我的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() 加法和除法是两个简单的函数。 如您所知,拥有组链会使ch

假设我的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_解锁任务。我想知道如何更改它的设置,比如如何更改默认的重试延迟?对于其他函数,如add和divide,我们可以在它们的装饰器中执行此操作,如:

@shared_task(default_retry_delay=240)
def add(x,y):
    return x+y
但我不知道如何更改使用组链隐式创建的chord_unlock任务的设置。

解决了! 我需要使用从芹菜创建的应用程序实例,如下所示:

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
是一个包含所有任务的字典,通过它我们可以更改它们的设置。

解决了! 我需要使用从芹菜创建的应用程序实例,如下所示:

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
是一个包含所有任务的字典,通过它我们可以更改它们的设置