Skip to content

Instantly share code, notes, and snippets.

@dylanroy
Forked from jobliz/RedisPythonPubSub1.py
Created March 24, 2014 19:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dylanroy/9747706 to your computer and use it in GitHub Desktop.
Save dylanroy/9747706 to your computer and use it in GitHub Desktop.
import redis
import threading
class Listener(threading.Thread):
def __init__(self, r, channels):
threading.Thread.__init__(self)
self.redis = r
self.pubsub = self.redis.pubsub()
self.pubsub.subscribe(channels)
def work(self, item):
print item['channel'], ":", item['data']
def run(self):
for item in self.pubsub.listen():
if item['data'] == "KILL":
self.pubsub.unsubscribe()
print self, "unsubscribed and finished"
break
else:
self.work(item)
if __name__ == "__main__":
r = redis.Redis()
client = Listener(r, ['test'])
client.start()
r.publish('test', 'this will reach the listener')
r.publish('fail', 'this will not')
r.publish('test', 'KILL')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment