Python 更改Django中组的芹菜链的设置
假设我的tasks.py中有以下函数: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
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
是一个包含所有任务的字典,通过它我们可以更改它们的设置