У меня очень простое приложение 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 -A email_service worker -l info -Q video