def subscribe_to_channel(self, channel): if channel in self.subscriptions: return self.subscriptions[channel] else: subject = Subject() # monkeypatch Subject to unsubscribe pubsub on observable # subscription.dispose() subject.observers = SubjectObserversWrapper(self, channel) self.subscriptions[channel] = subject return subject
def subscribe_to_channel(self, channel): if channel in self.subscriptions: return self.subscriptions[channel] else: self.pubsub.subscribe(channel) subject = Subject() # monkeypatch Subject to unsubscribe pubsub on observable # subscription.dispose() subject.observers = SubjectObserversWrapper(self, channel) self.subscriptions[channel] = subject if not self.greenlet: self.greenlet = gevent.spawn(self._wait_and_get_messages) return subject