2016-11-20 42 views
0

我嘗試使用芹菜。我已經安裝了通過命令兔MQ芹菜教程:芹菜錯誤「期待0xce時收到0x00」

sudo apt-get install rabbitmq-server 

和所有運作良好,而我寫我的代碼在一個文件中,並運行它來測試功能。但是,當我嘗試添加在Django的觀點我的代碼,然後做的併發請求我的意見,我得到了這樣的異常:

File "/home/kinmanz/PycharmProjects/GitFace/myvenv/lib/python3.5/site-packages/amqp/connection.py", line 464, in drain_events 
    return self.blocking_read(timeout) 
    File "/home/kinmanz/PycharmProjects/GitFace/myvenv/lib/python3.5/site-packages/amqp/connection.py", line 468, in blocking_read 
    frame = self.transport.read_frame() 
    File "/home/kinmanz/PycharmProjects/GitFace/myvenv/lib/python3.5/site-packages/amqp/transport.py", line 251, in read_frame 
    'Received {0:#04x} while expecting 0xce'.format(ch)) 
amqp.exceptions.UnexpectedFrame: Received 0x00 while expecting 0xce 

我認爲,問題可能出在請求的併發,我應該以某種方式使隊列併發安全。

我使用Python 3.5,芹菜4.0.0,3.5.7的RabbitMQ


其實問題amqplib見下面的回答。

+0

您的django視圖是否包含任何芹菜相關的任務調用? –

+0

沒有任何,我發現在這裏https://github.com/celery/celery/issues/2066問題實際上與python3有關的問題,並且創建者剛寫下他沒有任何資源來解決這個問題,可能有沒有其他方法可以解決這個問題?可能你可以建議一些關於使用Python3 +芹菜+併發請求cellery,以便我可以得到工作變體。 –

+1

我已經設法解決這個問題,無論如何,它似乎已經克服了這個問題,但這不是很好的方法。我試圖使用redis,因爲後端app = Celery('tasks',backend ='redis:// localhost',broker ='pyamqp://'),如果有人會幫忙看看http:// michal .karzynski.pl/blog/2014/05/18/setup-an-asynchronous-task-queue-for-django-using-celery-redis /將來我會添加答案 –

回答

0

可能對於有同樣問題的人,我會列出可能找到的解決方案。如果你知道更好的解決方案,請添加你的答案或評論我的。

如果您正在使用Python的2.x的後來居然看到問題https://github.com/celery/celery/issues/922 問題amqplib如果改變librabbitmq都應該是工作,這是很容易做到的,請參閱: Framing Errors in Celery 3.0.1


但是,如果你正在使用Python 3.x都有你解決不了那樣的這個問題,是因爲沒有與Python 3兼容升ibrabbitmq可用,看到這個問題https://github.com/celery/celery/issues/2066但在這種情況下,你可以在Redis的例如改變你的結果後端:

1)安裝Redis的服務器:

$ sudo aptitude install redis-server 

2)更改您的應用配置

app = Celery('tasks', backend='redis://localhost', broker='pyamqp://') 

有關安裝一些有用的鏈接Redis的Setting up an asynchronous task queue for django using celery redisCelery-redis quick guide


也爲的Python 3,你可以嘗試在運行芹菜工人的Python 2.7,而你的應用程序正在的Python 3 ,在這種情況下,請不要忘記安裝librabbitmq而不是amqplib。 (這種方式似乎很不方便)