Ниже приведен код, который я запускаю в службе. По большей части скрипт работает нормально в течение нескольких дней / недель, пока скрипт не работает и не падает. Я не очень беспокоюсь о сбойной части, так как могу устранить причину из журнала ошибок соответствующим образом. Проблема, с которой я сталкиваюсь, заключается в том, что иногда, когда служба перезапускается и пытается снова подключиться к серверу, возникает ошибка (10061, 'Connection refused')
, поэтому служба не может снова запуститься. Странная часть состоит в том, что нет процессов python, выполняющихся, когда соединения отклоняются. В IE нет процесса с именем «pythonw.exe» или «pythonservice.exe». Следует отметить, что я также не могу подключиться к серверу с любой другой машины, пока не перезагрузлю компьютер, на котором выполняется клиентский скрипт. Клиентский компьютер работает под управлением Python 2.7 на ОС Windows Server 2003. Также следует отметить, что сервер написан на аппаратном обеспечении, к которому у меня нет доступа к коду.
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)