[Twisted-Python] Graceful shutdown

Jonas Lindmark jonas.lindmark at gmail.com
Thu Aug 29 01:20:57 MDT 2013


Thanks for the link. Looking at your code I found the magic lines I was
missing.

Implementing my own HTTPChannel was the key to success. Now I don't have to
poll reactor.getWriters() to see if there are unfinished writers.

I ended up with something like this:
class ApiHTTPChannel(HTTPChannel):
    _connection_lost = None

    def notifyConnectionLost(self):
        if self._connection_lost is not None:
            return self._connection_lost
        return defer.succeed(None)

    def connectionMade(self):
        HTTPChannel.connectionMade(self)
        self._connection_lost = defer.Deferred()

    def connectionLost(self, reason):
        HTTPChannel.connectionLost(self, reason)
        self._connection_lost.callback(None)

Thanks


On 28 August 2013 18:09, Aaron Gallagher <_ at habnab.it> wrote:

> I didn't read over your code, but this is something that I've
> independently implemented. You can see my implementation at
> <https://github.com/habnabit/polecat/blob/master/polecat.py>. The Site
> subclass does some other monitoring-related things, but you should be
> able to tease out just the graceful shutdown parts if that's all you
> want.
>
> Polecat needs some work and a lot of documentation, but for now, the way
> to do a graceful shutdown is to make a PolecatSite and then
> addSystemEventTrigger('before', 'shutdown',
> yourPolecatSite.gracefullyStopActiveClients).
>



-- 
/Jonas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://twistedmatrix.com/pipermail/twisted-python/attachments/20130829/5c0f995c/attachment.html>


More information about the Twisted-Python mailing list