def send(self, sender, **named):
responses = []<EOL>if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS:<EOL><INDENT>return responses<EOL><DEDENT>for receiver in self._live_receivers(sender):<EOL><INDENT>response = receiver(signal=self, sender=sender, **named)<EOL>responses.append((receiver, response))<EOL><DEDENT>return responses<EOL>
Send signal from sender to all connected receivers.

If any receiver raises an error, the error propagates back through send,
terminating the dispatch loop. So it's possible that all receivers
won't be called if an error is raised.

Arguments:

    sender
        The sender of the signal. Either a specific object or None.

    named
        Named arguments which will be passed to receivers.

Returns a list of tuple pairs [(receiver, response), ... ].