gpt4 book ai didi

rabbitmq - celery 工作人员/服务器可以接受来自非 celery 生产者的任务吗?

转载 作者:行者123 更新时间:2023-12-02 21:58:51 30 4
gpt4 key购买 nike

我想使用使用 java nio 编写的 comet 服务器来发送实时更新。当接收信息时,我希望它扫描数据,并通过rabbitmq将任务发送到工作线程。理想情况下,我希望 celery 服务器位于rabbit的另一端,管理一个处理这些任务的工作线程池。

但是,根据我的理解,celery 的工作原理是位于rabbitmq 的两端,它本质上通过嵌入到消费者和生产者的代码中来接管生产者和消费者的角色。有没有办法像我上面描述的那样设置 celery ?谢谢

最佳答案

是的,当然!

您可以将自定义消息使用者添加到 celery 应用中。

请引用Extensions and Bootsteps在 celery 文档中。

以下是上面链接中的示例代码的一部分:

from celery import Celery
from celery import bootsteps
from kombu import Consumer, Exchange, Queue

my_queue = Queue('custom', Exchange('custom'), 'routing_key')

app = Celery(broker='amqp://')


class MyConsumerStep(bootsteps.ConsumerStep):

def get_consumers(self, channel):
return [Consumer(channel,
queues=[my_queue],
callbacks=[self.handle_message],
accept=['json'])]

def handle_message(self, body, message):
print('Received message: {0!r}'.format(body))
message.ack()
app.steps['consumer'].add(MyConsumerStep)

测试一下:

python -m celery -A main worker

另请参阅:Using Celery with existing RabbitMQ messages

关于rabbitmq - celery 工作人员/服务器可以接受来自非 celery 生产者的任务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11964742/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com