2012-06-28 23 views
5

Pika kütüphanesini (gevent tarafından yamalanan maymun) kullanarak, gevent programımdan RabbitMQ'yi kullanmaya çalışıyorum, rastgele bir zaman aşımı hatası atmayı seviyor.Pika ve gevent ile rasgele zaman aşımı hatası

Ne yapmalıyım? Kullanabileceğim başka bir kütüphane var mı?

WARNING:root:Document not found, retrying primary. 
Traceback (most recent call last): 
    ... 
    File "/usr/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 32, in __init__ 
    BaseConnection.__init__(self, parameters, None, reconnection_strategy) 
    File "/usr/lib/python2.7/dist-packages/pika/adapters/base_connection.py", line 50, in __init__ 
    reconnection_strategy) 
    File "/usr/lib/python2.7/dist-packages/pika/connection.py", line 170, in __init__ 
    self._connect() 
    File "/usr/lib/python2.7/dist-packages/pika/connection.py", line 228, in _connect 
    self.parameters.port or spec.PORT) 
    File "/usr/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 44, in _adapter_connect 
    self._handle_read() 
    File "/usr/lib/python2.7/dist-packages/pika/adapters/base_connection.py", line 151, in _handle_read 
    data = self.socket.recv(self._suggested_buffer_size) 
    File "/usr/lib/python2.7/dist-packages/gevent/socket.py", line 427, in recv 
    wait_read(sock.fileno(), timeout=self.timeout, event=self._read_event) 
    File "/usr/lib/python2.7/dist-packages/gevent/socket.py", line 169, in wait_read 
    switch_result = get_hub().switch() 
    File "/usr/lib/python2.7/dist-packages/gevent/hub.py", line 164, in switch 
    return greenlet.switch(self) 
timeout: timed out 
+0

sadece . –

cevap

5

Pika ideal pika yuva tarafından engellenmeyen dayalı RabbitMQ kendi asenkron bağlantı uygular çünkü gevent ile kullanmak için uygun değildir. Bu sadece gevent'in aynı uygulamayla iyi uyuşmuyor.

Sen Ben de bir Django/Gunicorn uygulamasında Pika kullanarak zaman aşımı sorunlar yaşıyorum py-amqplib veya kombu

0

kullanarak düşünebilirsiniz. connection_attempts'u yükseltmekle veya zaman aşımını arttırmakla oynadım, ancak RabbitMQ her zaman bağlantıyı bir el sıkışma hatasıyla kapattı. İkincisi, Pika'nın sokete hiç bir veri iletmediğini gösteriyor.

Zaman aşımının nedeni bu libevent bug olabilir - en azından çevremde bu hataya eklenmiş olan komut sorunu yeniden üretebilir.

Sen (henüz yayınlanmadı yazılı anındaki)> = 1,0 gevent yükseltme deneyin olabilir:

wget http://gevent.googlecode.com/files/gevent-1.0b4.tar.gz 
pip install gevent-1.0b4.tar.gz 
Bir yeşil iplik 2 veya daha fazla üreticilere kullandığımda aynı sorunu yukarı bakacak ediyorum
+0

'' gevent-1.0.1'' kullanılmaya çalışıldı - hayır şansı. –