다음 트위스트 클라이언트 코드를 사용하여 매 3 초마다 서버에 데이터를 보내는 서버에 연결하고 연결 클라이언트가 매 10 분마다 서버에 다시 연결을 시도합니다. 이 클라이언트 코드는 24 시간 실행됩니다. 그러나 나는 장기간에 걸쳐 클라이언트가 서버를 온라인 상태에서도 서버에 데이터를 전송하지 못한다는 사실을 관찰했습니다. 이전 클라이언트 프로세스를 종료 한 후이 클라이언트 코드를 다시 시작하여 다시 작동하게해야합니다. 다음은 내가 사용하고있는 코드입니다 :트위스트 클라이언트가 서버에 연결을 중단합니다
#!/usr/bin/python
import binascii
from functools import partial
from twisted.internet import reactor, protocol, task
from twisted.internet.protocol import ReconnectingClientFactory
connection = None
lineNumber = 5
displayIP = '192.168.0.207'
l = None
#MAIN CLASSES FOR TCP CLIENT
class EchoClient(protocol.Protocol):
def connectionMade(self):
global connection
connection = self.transport
startClock(self)
def dataReceived(self, data):
self.print_message(data)
def print_message(self, data):
print " message received"
class EchoFactory(protocol.ReconnectingClientFactory):
protocol = EchoClient
maxDelay = 10
def startedConnecting(self, connector):
pass
def buildProtocol(self,addr):
self.resetDelay()
return EchoClient()
def clientConnectionLost(self, conn, reason):
global connection
connection = None
ReconnectingClientFactory.clientConnectionLost(self, conn, reason)
def clientConnectionFailed(self, conn, reason):
global connection
connection = None
ReconnectingClientFactory.clientConnectionFailed(self, conn, reason)
#TO SEND to server
def sendToServer(self):
if connection:
sendPackets(self)
else: pass
#clock after every 3 seconds packet is send to server
def startClock(self):
l = task.LoopingCall(partial(sendToServer,self))
l.start(3.0)
#send current status to server
def sendPackets(self):
try:
self.transport.write((binascii.unhexlify(sendString)))
except Exception, ex: pass
#THIS CONNECTS CLIENT TO server
def main():
f = EchoFactory()
reactor.connectTCP(displayIP, 8004, f)
reactor.run()
#MAIN FUNCTION CALLING MODULE
if __name__ == '__main__':
main()
이 코드가 장기적으로 실패하면 어떤 문제가 발생할 수 있습니까?