以下是我在服务中运行的代码。在大多数情况下,脚本运行好几天/几周,直到脚本打嗝并崩溃。我不是很担心崩溃的部分,因为我可以从错误日志中解决原因适当的补丁。我面临的问题是,有时当服务重新启动并尝试再次连接到服务器时,会出现(10061, 'Connection refused')
错误,因此服务无法再次启动。奇怪的是,当连接被拒绝时,没有运行python进程。 IE没有图像名称为“pythonw.exe”或“pythonservice.exe”的进程。应该注意的是,在重置运行客户端脚本的计算机之前,我无法使用任何其他计算机连接到服务器。客户端计算机在Windows Server 2003操作系统上运行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)
答案 0 :(得分:1)
拒绝连接是一个错误,意味着连接另一端的程序不接受您的连接尝试。很可能它没有注意到你崩溃,并且没有关闭它的连接。
你可以做的只是睡一会儿(30-60秒)并再试一次,并在循环中执行此操作并希望另一端注意到连接已断开,以便它可以再次接受新连接。
答案 1 :(得分:0)
原来,网络管理员关闭了我尝试连接的端口。它对于属于服务器的一个IP是开放的。问题是服务器有两个带有两个独立IP的网卡。问题现已解决。