celery指定队列和指定任务名称

指定队列

在启动celery任务时,加上命令-Q 队列名即可指定该任务监听的队列.
但是仅仅这样还是无法让任务的发送方知道该任务要发送到哪个队列(默认队列是发送到名为celery的队列中)
让发送方指定任务发送的队列有如下方式:

    1. 配置文件
      celery配置文件中有task_routes参数,参数格式如下
{
  "manage.add":{
      "queue":"mathematical",
      "routing_key":"test"
  }
}

其中manage.add为规格名称,该任务会把manage.add方法的请求发送到此队列中.
queue队列名,需要与-Q指定的名称一致
routing_key路由规则,可省略(作用还没搞懂).

  • send_task函数处
    在发送异步请求的send_task函数处,可以通过queue函数指定队列名称

指定任务名称

在celery中若未指定名称,其调用方法名为其在项目中的路径,例如model.task.func(),这样调用比较麻烦,其可以通过celery_app.task(name='xxx')的方式修改其名称,例如

@celery_app.task(name='new_add')
def add():
    return 1+2

你可能感兴趣的:(celery指定队列和指定任务名称)