【问题标题】:change settings for celery chain of group in Django在 Django 中更改组芹菜链的设置
【发布时间】:2015-11-17 01:00:06
【问题描述】:

假设我的 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 ?对于 add 和 divide 等其他函数,我们可以在它们的装饰器中执行此操作,例如:

@shared_task(default_retry_delay=240)
def add(x,y):
    return x+y

但我不知道如何更改使用组链隐式创建的 chord_unlock 任务的设置。

【问题讨论】:

    标签: python django celery multitasking


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-07
      • 2012-12-05
      • 2021-08-21
      • 2012-11-16
      • 1970-01-01
      • 2019-01-29
      • 2012-05-01
      相关资源
      最近更新 更多