Django芹菜多个具有特定汇率的工人

时间:2015-04-16 15:48:26

标签: python django celery django-celery celery-task

我必须从数据库(oracle)调用一些存储过程。我使用celery和redis以异步方式调用此SP。

tasks.py

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

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

我需要为每项任务指定不同的会计。对于任务CONCI我需要1的并发性,对于CARGA_FTP任务,并发性为3或更多

celery multi start -A provcon conc carga -c:conc 1 -c:carga 3

文件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.conci": {"queue": "conc"}, "tasks.carga_ftp": {"queue": "carga"}}

但工人" CONC"同时承担超过1项任务和工人" CARGA"同时承担3项以上的任务

当我看到这个过程时

ps aux | grep 'celery'

我看到工人的两个过程" CONC"四个工人" CARGA"有4个过程。

我不知道我是否遗漏了某些东西,或者我执行芹菜的突击队员是不是错了。 但是,我只需要执行一项任务即可完成任务" CONCI"

任何建议

提前致谢

1 个答案:

答案 0 :(得分:3)

当你开始芹菜工作时,它就会启动

  1. 消费者流程和
  2. 工人池
  3. 因此,如果你启动一个并发为1的worker,它将有2个进程。对于并发度为3的worker,它有4个进程。

    Celery处理任务异步。它将立即消耗给定的任务,但一次执行1个任务。

相关问题