[Twisted-Python] Catch clientConnectionLost in a Factory
Grigorescu Ciprian
grigorescu_ciprian at yahoo.com
Thu Dec 4 10:33:21 MST 2014
Hello,
I have a small problem. I using SMTPClient and ClientFactory in order to send emails. I have something like: observer['workers'] = total mails to send(connections)
def got_result(*args):
observer['results'] += 1
def got_error(err):
observer['errors'] += 1
def got_end(_):
if observer['results'] + observer['errors'] == observer['workers']:
reactor.stop()
factory = SomeFactory(...) reactor.connectTCP(...)
d.addCallbacks(got_result, got_error)
d.addBoth(got_end)
class SomeFactory(ClientFactory):
def clientConnectionLost(self, connector, reason):
self.error_handle(reason)
def error_handle(self, reason):
if self.deferred is not None:
d, self.deferred = self.deferred, None
d.errback(reason)
Everything is working ok if I don't have errors like: [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.ConnectionLost'>: Connection to the other side was lost in a non-clean fashion: Connection lost.When I have a error like that, the rector is not stopping because the error counter is not incrementing. But when I kill the reactor, got_error() receive the errors and observer['results'] + observer['errors'] == observer['workers'] is evaluated and the reactor stops(with a error of course, Can't stop reactor that isn't running :)).
I don't understand how can I make this work. Can someone help me?
Thanks,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://twistedmatrix.com/pipermail/twisted-python/attachments/20141204/be425009/attachment.html>
More information about the Twisted-Python
mailing list