使用 celery 往指定的 exchange 发送消息

2018-08-29 15:01:47 +08:00
 qq976739120

celery 文档上的用法好像是声明好 exchange,queue,绑定好之后往队列里发,但是我现在的场景是直接发到 exchange 里就可以,queue 谁来绑定我并不关心,我也不要去做声明用 kombu 自己实现很容易,但是 celery 有什么方法做到吗,我看到的都是直接往 queue 里发.消息队列用的 rmq,类型是 topic,顺便求 flask+celery+rmq 的的最佳实践.以下是我用 kombu 的实现

def send_as_task( exchange_name, args=(), kwargs={}, routing_key=''):
    exchange = Exchange(name=exchange_name, type='topic', durable=True, auto_delete=False)
    payload = {'args': args, 'kwargs': kwargs}
    with producers[config_use.get_connection()].acquire(block=True) as producer:
        producer.publish(body=payload,
                         serializer='json',
                         compression='bzip2',
                         exchange=exchange,
                         declare=[exchange],
                         routing_key=routing_key,
                         retry=True,
                         retry_policy={
                             'interval_start': 0,  # First retry immediately,
                             'interval_step': 2,  # then increase by 2s for every retry.
                             'interval_max': 30,  # but don't exceed 30s between retries.)
                             'max_retries': 30,  # give up after 30 tries.
                         },
                         )
2475 次点击
所在节点    Python
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/484268

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX