以下是我在服務中運行的代碼。大多數情況下,腳本可以在天/星期運行良好,直到腳本打嗝和崩潰。我並不擔心崩潰的部分,因爲我可以適當地從錯誤日誌中解決錯誤日誌的原因。我面臨的問題是,有時當服務重新啓動並嘗試再次連接到服務器時,它會得到(10061, 'Connection refused')
錯誤,以致服務無法再次啓動。奇怪的是,當連接被拒絕時,沒有python進程運行。 IE沒有與圖像名稱「pythonw.exe」或「pythonservice.exe」進程。應該指出,我無法連接到任何其他機器的服務器,直到我重置運行客戶端腳本的計算機。客戶端機器在Windows Server 2003操作系統上運行python 2.7。還應該注意的是,服務器是在一個我無法訪問代碼的硬件上編碼的。服務器單元拒絕連接I重置客戶端機器
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延遲是一個好主意,我會試試看。但是它仍然不能解釋爲什麼即使沒有python進程打開,我仍然無法連接到服務器。即使過了一段時間。 – Richard
@Richard:不,這是拒絕連接的服務器,你的結局沒有任何錯誤。 –
感謝您的幫助。我意識到服務器拒絕連接。閱讀文檔它一次只允許2個連接。我不明白的是,當我重置客戶端機器時,我能夠再次連接到服務器,這使我相信有一些東西在客戶端機器上使用連接,雖然我沒有證據證明它確實如此。 – Richard