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
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%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% Ein besserer Weg ist das mit twisted.protocols.policies.TimeoutMixin
. Es macht im Wesentlichen ein callLater
, aber abstrahiert in ein Mixin
.
Tags und Links python sockets networking twisted