Exemple #1
0
def listener():
    while 1:
        # Make sure this thread can't die.
        try:
            try:
                self, sender, kw = _signal_queue.get()
            except ValueError:
                log.error('Error unpacking queue item.', exc_info=True)
            if self is _sentinel:
                break
            try:
                Signal.sync_send(self, sender, **kw)
            except Exception:
                log.error('Error calling signal.', exc_info=True)
        except Exception:
            # Weird things happen during interpreter shutdown.
            if log:
                log.critical('Uncaught error.', exc_info=True)
Exemple #2
0
def async_send(self, sender, **named):
    # Bail early if no one is listening.
    if not self.receivers:
        return []
    # Django depends on class_prepared being synchronous.
    if self is models.signals.class_prepared:
        return Signal.sync_send(self, sender, **named)
    _signal_queue.put_nowait((self, sender, named))
    return []