def flushmany(self):
        """Send a potentially huge number of pending signals over the message bus.

        This method assumes that the number of pending signals might
        be huge, so that they might not fit into memory. However,
        `SignalBus.flushmany` is not very smart in handling concurrent
        senders. It is mostly useful when recovering from long periods
        of disconnectedness from the message bus.

        :return: The total number of signals that have been sent

        """

        models_to_flush = self.get_signal_models()
        try:
            return sum(self._flushmany_signals(model) for model in models_to_flush)
        finally:
            self.signal_session.remove()