Kann in Twisted ein Timeout für einen Socket gesetzt werden?

8

Mir ist klar, dass ich wahrscheinlich nur dumm bin und etwas Großes und Wichtiges vermisse, aber ich kann nicht herausfinden, wie man ein Timeout in twisted mit reactor.listenUDP angibt. Mein Ziel ist es, in der Lage zu sein, eine Zeitüberschreitung festzulegen, und nach Ablauf dieser Zeit, wenn DatagramProtocol.datagramReceived nicht ausgeführt wurde, führe einen Callback oder etwas aus, das ich verwenden kann, um reactor.stop () aufzurufen. Jede Hilfe oder Beratung wird geschätzt. Danke

    
Jurassic_C 21.10.2008, 12:56
quelle

4 Antworten

5

Da Twisted ereignisgesteuert ist, brauchen Sie an sich keine Zeitüberschreitung. Sie müssen lediglich eine Statusvariable (wie datagramRecieved) festlegen, wenn Sie ein Datagramm empfangen und einen Schleifenaufruf prüft die Zustandsvariable, stoppt ggf. den Reaktor und löscht dann die Zustandsvariable:

%Vor%     
Aaron Maenpaa 21.10.2008, 13:15
quelle
13

Ich denke, reactor.callLater würde besser funktionieren als LoopingCall . Etwas wie das:

%Vor%     
daf 30.10.2008 18:52
quelle
3

mit Reaktor müssen wir callLater verwenden. Starten Sie den Timeout-Countdown, wenn connectionMade ausgeführt wird. Setzen Sie den Timeout-Countdown zurück, wenn lineReceived.

Hier ist das

%Vor%     
Mychot sad 04.08.2012 16:26
quelle
0

Ein besserer Weg ist das mit twisted.protocols.policies.TimeoutMixin . Es macht im Wesentlichen ein callLater , aber abstrahiert in ein Mixin .

    
Tim Tisdall 22.07.2014 19:09
quelle

Tags und Links