Комбу / Сельдерей Издатель Подписчик - PullRequest
0 голосов
/ 24 марта 2019

У меня очень простое приложение 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
...