Make daphne serving thread idle better

This commit is contained in:
Andrew Godwin 2016-02-23 21:23:55 +00:00
parent b5400d0be5
commit 07801e9ae8

View File

@ -27,15 +27,18 @@ class Server(object):
Run in a separate thread; reads messages from the backend. Run in a separate thread; reads messages from the backend.
""" """
channels = self.factory.reply_channels() channels = self.factory.reply_channels()
delay = 0.3
# Quit if reactor is stopping # Quit if reactor is stopping
if not reactor.running: if not reactor.running:
logging.debug("Backend reader quitting due to reactor stop") logging.debug("Backend reader quitting due to reactor stop")
return return
# Don't do anything if there's no channels to listen on # Don't do anything if there's no channels to listen on
if channels: if channels:
delay = 0.05
channel, message = self.channel_layer.receive_many(channels, block=False) channel, message = self.channel_layer.receive_many(channels, block=False)
if channel: if channel:
delay = 0
logging.debug("Server got message on %s", channel) logging.debug("Server got message on %s", channel)
# Deal with the message # Deal with the message
self.factory.dispatch_reply(channel, message) self.factory.dispatch_reply(channel, message)
reactor.callLater(0, self.backend_reader) reactor.callLater(delay, self.backend_reader)