2012-06-28 7 views
5

के साथ यादृच्छिक टाइमआउट त्रुटि मैं पिका लाइब्रेरी (गीवेंट द्वारा पैच बंदर) का उपयोग कर अपने गीवेंट कार्यक्रम के भीतर से खरगोश एमक्यू का उपयोग करने की कोशिश कर रहा हूं, गीवेंट यादृच्छिक रूप से टाइमआउट त्रुटि फेंकना पसंद करता है।पिका और गीवेंट

मुझे क्या करना चाहिए? क्या कोई और लाइब्रेरी है जिसका मैं उपयोग कर सकता हूं?

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

जब मैं एक हरे रंग के धागे में 2 या अधिक उत्पादकों का उपयोग मैं एक ही मुद्दे को सामना करना पड़ रहा हूँ केवल । –

उत्तर

5

पिका आदर्श क्योंकि पिका गैर अवरुद्ध सॉकेट के आधार पर RabbitMQ के लिए अपने स्वयं के अतुल्यकालिक कनेक्शन को लागू करता है gevent साथ उपयोग करने के लिए अनुकूल नहीं है। यह सिर्फ gevent के कार्यान्वयन के साथ ठीक से फिट नहीं है।

आप py-amqplib या kombu

0

का उपयोग कर मैं भी एक Django/Gunicorn आवेदन में पिका उपयोग करने के साथ टाइमआउट समस्या आ रही है पर विचार कर सकते। मैंने connection_attempts को बढ़ाने या टाइमआउट बढ़ाने के साथ खेला लेकिन खरगोश एमक्यू ने हमेशा हैंडशेक त्रुटि के साथ कनेक्शन बंद कर दिया। उत्तरार्द्ध यह इंगित करता है कि पिका ने कभी भी सॉकेट पर किसी भी डेटा को प्रेषित नहीं किया।

टाइमआउट का कारण यह libevent bug हो सकता है - कम से कम मेरे पर्यावरण में बग से जुड़ी लिपि इस समस्या को पुन: उत्पन्न करने में सक्षम है।

आप gevent करने के लिए> = 1.0 अपग्रेड करने का प्रयास कर सकता है (के जारी नहीं लिखित समय में अभी तक):

wget http://gevent.googlecode.com/files/gevent-1.0b4.tar.gz 
pip install gevent-1.0b4.tar.gz 
+0

'' 'gevent-1.0.1''' का उपयोग करने का प्रयास किया - कोई किस्मत नहीं। –

संबंधित मुद्दे