2016-08-04 24 views
0

Brauchen Sie Hilfe! Beim Ausführen des Python-Skripts mit Rabbit MQ RPC. Ich bekomme einen Socket 104, Socket closed when connection was open Fehler. Unten ist Python Traceback und etwas Code:Kaninchen MQ Python-Skript. Socket geschlossen, wenn die Verbindung offen war

Traceback (most recent call last): 
    File "./server.py", line 34, in <module> 
    channel.start_consuming() 
    File "/usr/lib/python2.6/site-packages/pika/adapters/blocking_connection.py", line 1681, in start_consuming 
    self.connection.process_data_events(time_limit=None) 
    File "/usr/lib/python2.6/site-packages/pika/adapters/blocking_connection.py", line 656, in process_data_events 
    self._dispatch_channel_events() 
    File "/usr/lib/python2.6/site-packages/pika/adapters/blocking_connection.py", line 469, in _dispatch_channel_events 
    impl_channel._get_cookie()._dispatch_events() 
    File "/usr/lib/python2.6/site-packages/pika/adapters/blocking_connection.py", line 1310, in _dispatch_events 
    evt.body) 
    File "./server.py", line 30, in on_request 
    body=json.dumps(DEVICE_INFO)) 
    File "/usr/lib/python2.6/site-packages/pika/adapters/blocking_connection.py", line 1978, in basic_publish 
    mandatory, immediate) 
    File "/usr/lib/python2.6/site-packages/pika/adapters/blocking_connection.py", line 2065, in publish 
    self._flush_output() 
    File "/usr/lib/python2.6/site-packages/pika/adapters/blocking_connection.py", line 1174, in _flush_output 
    *waiters) 
    File "/usr/lib/python2.6/site-packages/pika/adapters/blocking_connection.py", line 395, in _flush_output 
    raise exceptions.ConnectionClosed() 
pika.exceptions.ConnectionClosed 

Antwort

0

Entschuldigung, da ich aufgrund niedriger Reputation nicht kommentieren kann. Könnten Sie ein wenig mehr Informationen darüber geben, wie Sie Ihre Verbindung öffnen? Ist es wirklich offen?

Es könnte wegen der Verlust der Verbindung mit Rabbitmq Server als Pika nicht mit Unterbrechungen befassen und oft in ähnlichen Stacktrace führt.

Ich hatte auch ähnliches Problem, in meinem Fall war es, weil meine Pika-Verbindung nach einiger Zeit fiel und mein Kollege war in der Lage, damit umzugehen, indem man eine Wartezeit für mq:port_number hinzufügte.

Wir Docker Behälter wurden mit so haben wir in unseren invoke.sh folgende Zeile für mq zu warten:

filename.py --wait-secs 30 --port-wait mq:5672

Ich hoffe, dass Sie in der Lage sind, dies zu lösen, nachdem das zu tun.

Andernfalls wäre es besser zu überprüfen, ob die Verbindung von Pika unterbrochen wird, bevor Ihr Python-Skript ausgeführt wird, oder weitere Informationen darüber zu geben, wie Sie es aufrufen.

+0

Können Sie mir helfen, die Wartezeit einzustellen? Ich verwende meine Skripte auf meinem Unix-Rechner –

+0

Verwenden Sie [rabbitmqctl] (https://www.rabbitmq.com/man/rabbitmqctl.1.man.html)? Wenn ja, sollte es eine unbegrenzte Zeitüberschreitung haben, oder Sie können explizit eine Zeitüberschreitung deklarieren? Ich bin mir nicht sicher, aber Sie können prüfen, mit nmap auf Port zuerst, wenn es offen ist oder nicht. Wenn es dann offen ist, wäre das Problem etwas anderes. Aber wenn es geschlossen ist, wenn Sie diesen Fehler erhalten, können Sie überprüfen, wie Sie Ihren Hasen-mq-Server offen halten. Sie können den Port auch zwangsweise mit netcat öffnen und dann warten, bis Hase mq die Anfragen akzeptiert. –

+0

Sie können auch [rabbitmq.config] (https://www.rabbitmq.com/configure.html) auschecken und die Umgebungsvariable handshake_timeout erhöhen. Es wäre jedoch besser, wenn Sie in Ihrem Beitrag mehr Details angeben, da dies anderen dabei hilft, Ihr Problem zu verstehen. –