Je répète actuellement une tâche dans une boucle à l'intérieur d'un rappel à l'aide Twisted, mais je voudrais le réacteur pour briser la boucle dans le rappel (un) si l'utilisateur émet un KeyboardInterrupt via Ctrl- C. D'après ce que j'ai testé, le réacteur ne s'arrête ou ne traite que les interruptions à la fin du rappel.torsadé - rappel via interruption KeyboardInterrupt
Est-il possible d'envoyer un KeyboardInterrupt au rappel ou le gestionnaire d'erreurs au milieu de la course de rappel?
Cheers,
Chris
#!/usr/bin/env python
from twisted.internet import reactor, defer
def one(result):
print "Start one()"
for i in xrange(10000):
print i
print "End one()"
reactor.stop()
def oneErrorHandler(failure):
print failure
print "INTERRUPTING one()"
reactor.stop()
if __name__ == '__main__':
d = defer.Deferred()
d.addCallback(one)
d.addErrback(oneErrorHandler)
reactor.callLater(1, d.callback, 'result')
print "STARTING REACTOR..."
try:
reactor.run()
except KeyboardInterrupt:
print "Interrupted by keyboard. Exiting."
reactor.stop()
Paul: Merci beaucoup pour la explication! Je me demandais pourquoi la moitié du temps, si je l'interrompais avec un signal, le code s'est rompu avec succès de mon code mais a produit une exception en attendant dans la boucle du réacteur. – user500869