我有一个非常简单的Django应用。当前,该应用正在使用RabbitMQ(cloudamqp)发布者队列。这是消费者的代码:
from kombu import Connection, Exchange, Queue
media_exchange = Exchange('media', 'topic', durable=True)
video_queue = Queue('video', exchange=media_exchange, routing_key='video')
def process_media(body, message):
print("welcome to consumer")
print(body)
message.ack()
# connections
with Connection('amqp://amqphost') as conn:
# consume
with conn.Consumer(video_queue, callbacks=[process_media]) as consumer:
# Process messages and handle events on all channels
while True:
conn.drain_events()
如果我将这些代码放在 my_consumer.py 中,并从这样的终端执行,它将按预期工作。
$ python my_consumer.py
但是,如果我放入 tasks.py 并放入任务方法中,它将无法正常工作。我想知道是否有什么办法可以将它与芹菜工作者和任务联系起来。我正在运行此celery命令以打开工作程序
$ celery -A email_service worker -l info -Q video