2016-08-04 1 views
0

도움이 필요하십니까? Rabbit MQ RPC를 사용하여 python 스크립트를 실행하는 중. Socket 104, Socket closed when connection was open 오류가 발생합니다. 내가 부족으로 인해 명성 의견을 드릴 수 없습니다로토끼 MQ python 스크립트. 연결이 열렸을 때 소켓이 닫혔습니다

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 

답변

0

사과 : 다음은 파이썬 추적 및 일부 코드입니다. 연결을 여는 방법에 대한 정보를 조금 더 제공 할 수 있습니까? 정말 열려 있니?

pika는 연결 해제를 처리하지 않으며 종종 유사한 스택 추적이 발생하므로 rabbitmq 서버와의 연결이 끊어 졌기 때문일 수 있습니다.

필자의 경우에도 pika 연결이 끊어져 내 동료가 mq:port_number에 대기 시간을 추가하여이 문제를 처리 할 수 ​​있었기 때문에 비슷한 문제가 발생했습니다. 우리는 고정 표시기 컨테이너를 사용하고

그래서 우리는 MQ를 기다리는 우리의 invoke.sh에 다음 줄을 추가 :

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

나는 당신이 그 일을 한 후에이 문제를 해결 할 수 있기를 바랍니다.

그렇지 않으면 python 스크립트가 실행되기 전에 연결이 pika에 의해 삭제되는지 확인하거나 호출하는 방법에 대한 자세한 정보를 제공하는 것이 좋습니다.

+0

대기 시간 설정 방법에 대해 도움을 줄 수 있습니까? 유닉스 머신에서 스크립트를 실행 중입니다 –

+0

[rabbitmqctl] (https://www.rabbitmq.com/man/rabbitmqctl.1.man.html)을 사용하고 있습니까? 그렇다면 무한 타임 아웃을 가져야하며 그렇지 않으면 명시 적으로 타임 아웃을 선언 할 수 있습니까? 확실하지는 않지만 포트가 열려 있거나 열려 있지 않으면 nmap을 사용하여 포트에서 먼저 확인할 수 있습니다. 그것이 열려 있다면 문제는 다른 것입니다. 하지만이 오류가 발생했을 때 문을 닫으면 토끼 mq 서버를 열어 두는 방법을 확인할 수 있습니다. 또한 netcat을 사용하여 강제로 포트를 연 다음 토끼 mq가 요청을 수락 할 때까지 기다릴 수 있습니다. –

+0

[rabbitmq.config] (https://www.rabbitmq.com/configure.html)를 체크 아웃하고 handshake_timeout 환경 변수를 늘릴 수도 있습니다. 그러나 다른 사람들이 귀하의 문제를 이해하는 데 도움이 될 수 있도록 귀하의 게시물에 세부 사항을 추가하는 것이 더 좋을 것입니다. –

관련 문제