我有两个任务。任务“heavy_task”需要并发 1,“lite_task”需要并发 4
@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之后,队列的并发性发生了重大变化。
我试试这个:
celery -A provcon worker -Q heavy -c 1
而当我执行任务heavy_task时,路由将不起作用,任务也不会执行。
但如果使用这个:
celery -A provcon -c 1
一切正常,但我一次只能执行一个任务,并且我需要能够以 1 的并发执行重任务和以 3 的并发执行 lite_task
任何建议