def run(self):
while True:<EOL><INDENT>msg = self._queue.get()<EOL>if msg is _SHUTDOWN:<EOL><INDENT>break<EOL><DEDENT>event, args, kwargs = msg<EOL>self._logger('<STR_LIT>', event)<EOL>for func in self._callbacks.get(event, []):<EOL><INDENT>func(*args, **kwargs)<EOL><DEDENT><DEDENT>
Process all callbacks, until `stop()` is called. Intended to run in
its own thread.