원격 위치에서 계측기를 모니터링하기 위해 Graphite 서버를 실행 중입니다. 내 서버의 로컬 포트를 내 서버의 로컬 포트에 매핑하는 "영구"ssh 터널을 내 서버 (좋아하는 autossh)의 컴퓨터에 연결합니다. 이것은 잘 작동하며, 데이터는 아무런 영향도 미치지 않습니다. 그러나 우리는 사이트에 얇은 위성 연결을 사용합니다. 나는 "데이터 크롤러 (data crawler)"를 실행하여 파이썬을 실행하고 소켓을 사용하여 패킷을 흑연 서버에 전송합니다. 문제는 링크가 일시적으로 중단되거나 (주로 서버가 재부팅되는 경우) 서버에 대한 연결을 다시 설정할 수 없다는 것입니다. 나는 오류를 잡아 냄 다음 socket.close()를 실행하고 다시 연다.하지만 연결을 다시 설정할 수 없다. 파이썬 프로그램을 종료하고 다시 시작하면 연결이 정상적으로 작동합니다. 어떻게하면 소켓 연결을 새로 고칠 수 있습니까?python - 서버를 일시적으로 사용할 수 없게되면 클라이언트에서 소켓 연결을 다시 시작할 수 없음
0
A
답변
0
코드 샘플없이 올바르게 대답하기 어렵습니다. 그러나 닫힌 socket
을 다시 사용하려는 것 같지만 불가능합니다.
소켓이 닫혀 있거나 오류가 발생하면 새 소켓 개체를 사용하여 새 연결을 다시 만들어야합니다. 이렇게하려면 원격 서버가 accept() 루프에서 여러 클라이언트 연결을 처리 할 수 있어야합니다.
일부 코드를 표시 할 수 있습니까? 그렇지 않으면 어떤 대답도 부정확 할 것입니다. (코드를 형식화하기 위해 줄 바꿈시 4 칸을 사용하십시오) – User
더 많은 시간이 걸릴 때'socket.settimeout (seconds)'을 시도하십시오 – User