celerty自定义队列demo_queue,然后使用命令以下命令启动没问题
celery -A tasks.tasks worker -P eventlet -Q queue_common -l debug
使用下面方式直接运行启动的worker收不到任务
app.worker_main(argv=['worker', '--loglevel=info','--pool=threads','-Q demo_queue'])
检查后发现,使用使用’-Q demo_queue’参数启动的worker的queue名字带有空格,导致出问题,改为"-Qdemo_queue"或则直接使用’–queues=demo_queue’即可
完整代码如下
from celery import Celery
app = Celery(
'app',
broker='redis://127.0.0.1:56379/0',
backend='redis://127.0.0.1:56379/1',
)
app.conf.update(
task_routes={
'edi.sub': {'queue': 'demo_queue'},
},
)
app.conf.task_default_queue = 'default'
@app.task(name='app.add', )
def add(x, y):
return x + y
@app.task(name='app.sub', )
def sub(x, y):
return x - y
if __name__ == '__main__':
app.worker_main(argv=[
'worker',
'--loglevel=info',
'--pool=threads',
'--concurrency=100',
'-Qdemo_queue', # 这里不能有空格或则使用下面方式
# '--queues=demo_queue',
])