Czy istnieje sposób, aby zatrzymać skręcony reaktor, gdy pewien stan zostanie osiągnięty. Na przykład, jeśli zmienna jest ustawiona na określoną wartość, to reaktor powinien się zatrzymać?Zatrzymać skręcony reaktor na stanie
12
A
Odpowiedz
18
Najlepiej, byś nie ustawić zmienną na wartość i zatrzymać reaktor, że zadzwonisz reactor.stop()
. Czasem nie jesteś w głównym wątku, a to nie jest dozwolone, więc może będziesz musiał zadzwonić pod numer reactor.callFromThread
. Oto trzy działające przykłady:
# in the main thread:
reactor.stop()
# in a non-main thread:
reactor.callFromThread(reactor.stop)
# A looping call that will stop the reactor on a variable being set,
# checking every 60 seconds.
from twisted.internet import task
def check_stop_flag():
if some_flag:
reactor.stop()
lc = task.LoopingCall(check_stop_flag)
lc.start(60)
5
pewne:
if a_variable == 0:
reactor.stop()
Przykład połączenia z zapętleniem jest tym, czego szukałem. Mimo to będzie wspaniale, jeśli zdarzenie może zostać dodane do reaktora, który mówi, gdy ustawiona jest opcja some_flag, wywołaj metodę some_method, która wywoła funkcję reaktor.stop. – gmemon
Dziękuję za szczegółową odpowiedź – gmemon
Dziękujemy za opublikowanie tego. Można się zastanawiać, dlaczego reactor.stop() nie domyślnie wywołuje z głównego wątku ... wydaje się niepotrzebną komplikacją, ale jestem pewien, że był to podstawowy powód. – wickedchicken