我正在将芹菜与兔子用作经纪人。
创建芹菜应用程序实例的代码
from celery import Celery
name = __file__.split('.')[0]
app = Celery(name)
app.config_from_object('celery_config')
@app.task
def fetch_url(url):
resp = requests.get(url)
print resp.status_code
@app.task
def post(url, **kwargs):
body = kwargs.get(payload)
auth = kwrags.get(auth)
resp = requests.put(url, data=body, auth=auth)
现在我想有2个单独的队列,一个用于获取。
现在我知道我必须在芹菜配置模块中定义2个队列,例如
CELERY_QUEUES = (
Queue('default', Exchange('default'), routing_key='default'),
Queue('get', Exchange('get')),
Queue('post', Exchange('post')),
)
我不收到的是为'ruting_key'选项指定的字符串?应该是任务的名称(在这种情况下为& post),还是有定义routing_key的规则?
无需定义队列或处理路由键,绑定或交换以作为您的情况来简单任务路由。现在使用自动路由来简化这一点(版本4.1)。(http://docs.celeryproject.org/en/latest/userguide/routing.html#automatic-routing)
- 命名您的任务。例如,可以说您的名字如下。
@app.task(name='get_task')
def fetch_url(url):
@app.task(name='post_task')
def post(url):
- 在您的芹菜配置文件中添加下面的行以将任务路由到适当的队列。
task_routes = {
'get_task': {'queue': 'get_queue'},
'post_task': {'queue': 'post_queue'}
}
由于task_create_missing_queues config是默认启用的,因此芹菜会为您创建队列。