mirror of
https://github.com/django/daphne.git
synced 2025-11-02 08:37:34 +03:00
26 lines
816 B
Python
26 lines
816 B
Python
import time
|
|
|
|
|
|
class Worker(object):
|
|
"""
|
|
A "worker" process that continually looks for available messages to run
|
|
and runs their consumers.
|
|
"""
|
|
|
|
def __init__(self, channel_backend, callback=None):
|
|
self.channel_backend = channel_backend
|
|
self.callback = callback
|
|
|
|
def run(self):
|
|
"""
|
|
Tries to continually dispatch messages to consumers.
|
|
"""
|
|
channels = self.channel_backend.registry.all_channel_names()
|
|
while True:
|
|
channel, message = self.channel_backend.receive_many_blocking(channels)
|
|
# Handle the message
|
|
consumer = self.channel_backend.registry.consumer_for_channel(channel)
|
|
if self.callback:
|
|
self.callback(channel, message)
|
|
consumer(channel=channel, **message)
|