2015-04-30 5 views
1

У меня есть две задачи. задача «heavy_task» нужен параллелизм 1 и «lite_task» нужен параллелизм 4django celery queue routing не работает

@task 
def lite_task(): 
    tabla = Proc_Carga() 
    sp = tabla.carga() 
    return None 

@task() 
def heavy_task(idprov,pfecha): 
    conci = Buscar_Conci() 
    spconc = conci.buscarcon(idprov,pfecha) 
    return None 

Я определение маршрутов в моем файле settings.py:

BROKER_URL = 'redis://localhost:6379/0' 
CELERY_IMPORTS = ("pc.tasks",) 
CELERY_ACCEPT_CONTENT = ['json'] 
CELERY_TASK_SERIALIZER = 'json' 
CELERY_RESULT_SERIALIZER = 'json' 
CELERY_RESULT_BACKEND='djcelery.backends.cache:CacheBackend' 
CELERY_ROUTES = {"tasks.heavy_task": {"queue": "heavy"},"tasks.lite_task": {"queue": "lite"}} 

Я пытаюсь два преобразования приложений работники, задающие параллелизм таким образом

celery multi start heavy lite -A provcon -c:heavy 1 -c:lite 3 

при первом вызове задачи heavy_task работает отлично и параллельность работ, но после вызова задачи lite_task в concurency для очереди тяжелые изменения.

Я стараюсь это:

celery -A provcon worker -Q heavy -c 1 

И когда я исполню heavy_task задач, маршрутизация не будет работать, и задача не выполняется.

, но если использовать это:

celery -A provcon -c 1 

все работает отлично, но я могу выполнить только одно задание на время, и мне нужно, чтобы быть в состоянии выполнить heavy_task с параллельности 1 и lite_task с параллелизм 3

Любые советы

ответ

0

стараюсь различные настройки, чтобы сделать очереди работ и, наконец, я сделал это. В tasks.py файле я harcoded в очереди в задачи декоратора

@task(queue = 'heavy') 

Для запуска рабочих я использую это:

celery multi start lite_w heavy_w -A provcon -Q:heavy_w heavy -Q:carga_w lite -l info -c:heavy_w 1 -c:lite_w 3 -E 

И я удалить настройки маршрутизации из файла settings.py , Мои настройки таковы:

BROKER_URL = 'redis://localhost:6379/0' 
CELERY_IMPORTS = ("pc.tasks",) 
CELERY_ACCEPT_CONTENT = ['json'] 
CELERY_TASK_SERIALIZER = 'json' 
CELERY_RESULT_SERIALIZER = 'json' 
CELERY_RESULT_BACKEND='djcelery.backends.cache:CacheBackend'