2014-09-29 45 views
0

我使用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] [email protected] 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={}} 

我敢肯定的是,消費者收到的消息,但爲何消息沒有被processd?我該怎麼處理呢?

回答

1

芹菜任務不是簡單的數據。你還需要有一些信息告訴工作人員你實際上調用了什麼任務,而這些信息在你的信息中缺失。

您可能應該使用其中一個Celery PHP實現,比如this one,而不是試圖自己實現它。

+0

謝謝,我用快速和骯髒的方法解決它。你的建議非常有用。 – mickeyandkaka 2014-09-29 14:54:08