отказано в соединении с серверным блоком - PullRequest
0 голосов
/ 31 октября 2011

Ниже приведен код, который я запускаю в службе. По большей части скрипт работает нормально в течение нескольких дней / недель, пока скрипт не работает и не падает. Я не очень беспокоюсь о сбойной части, так как могу устранить причину из журнала ошибок соответствующим образом. Проблема, с которой я сталкиваюсь, заключается в том, что иногда, когда служба перезапускается и пытается снова подключиться к серверу, возникает ошибка (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)

Ответы [ 2 ]

1 голос
/ 31 октября 2011

Отказ в соединении - ошибка, означающая, что программа на другой стороне соединения не принимает вашу попытку соединения.Скорее всего, он не заметил вашего сбоя и не закрыл соединение.

Что вы можете сделать, это просто поспать немного (30-60 секунд) и повторить попытку, и сделайте это в циклеи надеюсь, что другой конец заметит, что соединение разорвано, чтобы он мог снова принимать новые соединения.

0 голосов
/ 07 декабря 2011

Оказывается, что Network Admin закрыл порт, к которому я пытался подключиться. Он открыт для одного IP, который принадлежит серверу. Проблема в том, что на сервере есть две сетевые карты с двумя отдельными IP-адресами. Проблема теперь решена.

...