Почему сельдерей не обработал сообщение и не удалил его?

Я использую php для отправки сообщения rabbitmq и потребителю python для его обработки.
Вот что я сделал.

Эта часть отправить JSON Rabbitmq.

$data = array(
'id' => 123,
'url' => 'baidu.com',
);
$msg = new AMQPMessage(json_encode($data));
$channel->basic_publish($msg, $exchange);

И эта часть получает сообщение и обрабатывает его (используя сельдерей).

@app.task
def mytask(json_obj):
print(json_obj)
data = json.loads(json_obj)
thread_id = data['id']
url = data['url']
return py_read(thread_id, url)

Вот что я получаю из консоли:

[2014-09-29 15:51:34,564: WARNING/MainProcess] celery@mickey-Thurley ready.
[2014-09-29 15:51:37,395: WARNING/MainProcess] Received and deleted unknown message. Wrong destination?!?

The full contents of the message body was: body: '{"id":123,"url":"baidu.com"}' (28b)
{content_type:None content_encoding:None
delivery_info:{'redelivered': False, 'routing_key': '', 'exchange': 'celery', 'delivery_tag': 1, 'consumer_tag': '4'} headers={}}

Я уверен, что потребитель получил сообщение, но почему сообщение не было обработано? и что мне делать, чтобы справиться с этим?

0

Решение

Задача Celery — это не просто данные. Вам также нужно иметь что-то, что сообщит работнику, какую задачу вы на самом деле вызываете, а этого нет в вашем сообщении.

Вместо того, чтобы пытаться реализовать это самостоятельно, вы, вероятно, должны использовать одну из реализаций Celery PHP, например: этот.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector