다음은 서비스 내에서 실행중인 코드입니다. 대부분의 경우 스크립트는 딸꾹질과 충돌이 발생할 때까지 며칠/주 동안 잘 실행됩니다. 나는 그 오류의 원인을 패치를 적절하게 기록 할 수 있기 때문에 충돌에 대해 그렇게 걱정하지 않는다. 내가 직면 한 문제는 때로는 서비스가 다시 시작되어 서버에 다시 연결하려고 시도 할 때 서비스가 다시 시작될 수 없도록 (10061, 'Connection refused')
오류가 발생한다는 것입니다. 기괴한 부분은 연결이 거절 될 때 실행되는 파이썬 프로세스가 없다는 것입니다. IE 이미지 이름이 "pythonw.exe"또는 "pythonservice.exe"인 프로세스가 없습니다. 클라이언트 스크립트를 실행하는 컴퓨터를 재설정 할 때까지는 다른 컴퓨터에서도 서버에 연결할 수 없습니다. 클라이언트 컴퓨터는 Windows 서버 2003 OS에서 Python 2.7을 실행 중입니다. 또한 서버는 코드에 액세스 할 수없는 하드웨어에 코딩되어 있습니다.서버 장치에서 연결이 거부되었습니다. 클라이언트 컴퓨터를 리셋합니다.
try:
EthernetConfig = ConfigParser()
EthernetConfig.read('Ethernet.conf')
HOST = EthernetConfig.get("TCP_SERVER", "HOST").strip()
PORT = EthernetConfig.getint("TCP_SERVER", "PORT")
lp = LineParser()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
reader = s.makefile("rb")
while(self.run == True):
line = reader.readline()
if line:
line = line.strip()
lp.parse(line)
except:
servicemanager.LogErrorMsg(traceback.format_exc()) # if error print it to event log
s.shutdown(2)
s.close()
os._exit(-1)
+1 지연이 좋은 생각입니다. 시도해 보겠습니다. 그러나 여전히 파이썬 프로세스가 열려 있지 않아도 여전히 서버에 연결할 수 없다는 것을 설명하지 못합니다. 얼마 후. – Richard
@ 리차드 : 아니요, 연결을 거부하는 서버가 아닙니다. 당신의 목적에 아무런 문제가 없습니다. –
도움 주셔서 감사합니다. 서버가 연결을 거부한다는 것을 알고 있습니다. 문서를 읽으면 한 번에 2 개의 연결 만 허용됩니다. 내가 이해할 수없는 것은 클라이언트 컴퓨터를 리셋 할 때 서버에 다시 연결할 수 있다는 것이므로 클라이언트 컴퓨터에서 연결을 사용하고 있다고 생각하게됩니다. 참으로. – Richard