2011-06-29 21 views

Respuesta

18

Lo ideal es que no sería establecer la variable a un valor y detener el reactor, que se dice reactor.stop(). A veces no está en el hilo principal, y esto no está permitido, por lo que puede necesitar llamar al reactor.callFromThread. Aquí hay tres ejemplos de trabajo:

# 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) 
+0

El ejemplo de llamada en bucle es lo que estaba buscando. Aún así, será genial si se puede agregar un evento al reactor que dice que cuando se establece some_flag, llame a some_method, que llamará reactor.stop. – gmemon

+0

Gracias por su respuesta detallada – gmemon

+0

Gracias por publicar esto. Uno se pregunta por qué reactor.stop() no llama por defecto desde el hilo principal ... parece una complicación innecesaria, pero estoy seguro de que había una razón subyacente para ello. – wickedchicken

5

segura:

if a_variable == 0: 
    reactor.stop() 
Cuestiones relacionadas