我在我的雙絞線服務器中使用雙絞線呼叫在特定的時間間隔後再呼叫一次。我的代碼如下:只運行一個雙絞線呼叫
class Echo(LineReceiver):
def connectionMade(self):
self.factory.clients.append(self)
self.setRawMode()
startClock(self)
print 'Connected Client', self._peer
def connectionLost(self, reason):
self.factory.clients.remove(self)
print 'Lost connection from', self._peer
def rawDataReceived(self, data):
inputArray = ["%02X"%ord(inp) for inp in data]
if(CheckPacket(inputArray)):
PacketParser(inputArray, self)
else:
print "Fail"
d = self.transport.getHost()
print d.type
def startClock(self):
l = task.LoopingCall(partial(sendTimeRequest,self))
l.start(660.0)
def main():
port = 8000
factory = protocol.ServerFactory()
factory.protocol = Echo
factory.clients = []
try:
reactor.listenTCP(port,factory)
except Exception, ex:
print "Port %d is busy: %s" % (port, ex)
reactor.run()
因此,我的問題是,每當新客戶端連接到服務器一個新的循環呼叫將啓動。我如何確保它們只有一個循環調用正在運行,即使它們不止一個客戶端連接到服務器?目前它的發生方式如下,當第一個客戶端連接到服務器時,一個雙絞線循環呼叫開始,每隔10秒呼叫一次,然後調用函數a()。然後在2秒鐘之後另一個客戶端連接到服務器,然後另一個循環呼叫在每10秒鐘開始調用函數a(),但最後它變成這樣:
逝去的時間|功能稱爲
10秒| a()
12秒| a()
20秒| a()
22秒| a()
但我希望函數a()僅在每10秒後調用,而不考慮否。的客戶端連接到服務器。
'在特定時間間隔後調用一次'? –
他們應該只有一個循環呼叫正在運行,而現在每當新客戶端連接到服務器時,一個新的循環呼叫開始。 – prattom
questiom底部有一個編輯按鈕。請修復這個問題。 :)如果不清楚,這個問題的語法似乎打破了我。我不明白你想傳達什麼。 –