2016-08-04 1 views
0

Besoin d'aide! Lors de l'exécution du script python à l'aide de Rabbit MQ RPC. J'obtiens une erreur Socket 104, Socket closed when connection was open. Ci-dessous est traceback python et du code:Script Lapin MQ python. Prise fermée lorsque la connexion était ouverte

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 

Répondre

0

Excuses comme je suis incapable de commenter en raison de la réputation faible. Pourriez-vous fournir un peu plus d'informations sur la façon dont vous ouvrez votre connexion. Est-ce vraiment ouvert?

Cela peut être dû à la perte de connexion avec le serveur rabbitmq car pika ne gère pas les déconnexions et génère souvent une pile similaire. J'ai aussi eu un problème similaire, dans mon cas, c'était parce que ma connexion pika était tombée après un certain temps et mon collègue a été capable de gérer cela en ajoutant un temps d'attente pour mq:port_number.

Nous utilisions contenant docker, nous avons ajouté la ligne suivante à notre invoke.sh attendre Mq:

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

J'espère que vous êtes en mesure de résoudre ce après avoir fait cela.

Sinon, il serait préférable de vérifier si la connexion est supprimée par pika avant l'exécution de votre script python ou de fournir plus d'informations sur la façon dont vous l'invoquez.

+0

Pouvez-vous m'aider sur la façon de régler le temps d'attente? J'exécute mes scripts sur ma machine Unix –

+0

Utilisez-vous [rabbitmqctl] (https://www.rabbitmq.com/man/rabbitmqctl.1.man.html)? Si oui, il devrait avoir un délai d'attente infini, ou vous pouvez déclarer explicitement un délai d'expiration? Je ne suis pas sûr mais vous pouvez vérifier en utilisant nmap sur le port d'abord s'il est ouvert ou non. Si c'est ouvert alors, la question serait autre chose. Mais s'il est fermé lorsque vous obtenez cette erreur, vous pouvez vérifier comment garder votre serveur mq rabbit ouvert. Vous pouvez également forcer l'ouverture du port en utilisant netcat, puis attendre que mq rabbit accepte les requêtes. –

+0

Vous pouvez également consulter [rabbitmq.config] (https://www.rabbitmq.com/configure.html) et augmenter la variable d'environnement handshake_timeout. Mais il serait préférable que vous incluiez plus de détails dans votre message, car cela aiderait les autres à comprendre votre problème. –