celery

task_routes = {'feed.tasks.import_feed': {'queue': 'feeds'}}


使用glob模式匹配,或正则,以匹配所有任务 feed.tasks(名称空间)
app.conf.task_routes = {'feed.tasks.*': {'queue': 'feeds'}}


匹配模式的顺序很重要时:(需要指定设置为包含列表的元组)
task_routes = ([
    ('feed.tasks.*': {'queue': 'feeds'}),
    ('web.tasks.*': {'queue': 'web'}),
    (re.compile(r'(video|image)\.tasks\..*'), {'queue': 'media'}),
],)




$ celery -A proj worker -Q feeds
$ celery -A proj worker -Q feeds,celery




如果其他队列中,另一个交易要添加,只需指定一个自定义的exchange,和exchange type
from kombu import Exchange, Queue


app.conf.task_queues = (
    Queue('feed_tasks',    routing_key='feed.#'),
    Queue('regular_tasks', routing_key='task.#'),
    Queue('image_tasks',   exchange=Exchange('mediatasks', type='direct'),
                           routing_key='image.compress'),
)


RabbitMQ的消息优先级


通过x-max-priority参数,配置队列
from kombu import Exchange, Queue


app.conf.task_queues = [
    Queue('tasks', Exchange('tasks'), routing_key='tasks',
          queue_arguments={'x-max-priority': 10},
]


默认:
app.conf.task_queue_max_priority = 10


exchanges , queues, routing_keys
1.消息被发送到exchanges
2.exchange 消息从路由到一个或多个queues。(一些exchange type(标准定义分:direct [通过精确的路由密钥匹配],topic [由键和通配符:*(一个单词匹配)和#(匹配零个或多个字)],headers,fanout)存在,提供不同的方式做路由routing_key,或实现不同的消息传递方案exchange)
3.消息在queues中等待,直到有人消耗它
4.当已经确认该消息,从queues中删除。


步骤:创建exchange ; 创建queues ; 绑定queues to exchange.


来自:http://docs.celeryproject.org/en/latest/userguide/routing.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值