Source code for womack.publish

import json

import redis

from .config import config


[docs]class Publisher(object): """Womack event publisher. Use instances of this class to publish events to Womack channels. :param redis_connection: Redis instance to publish events to. Default is None, in which case a connection will be to the made to the redis_host and redis_port set in the :doc:`config`. :param key: The key prefix to use when qualifying channel names. Default is None, in which case they key used is the one set in the :doc:`config`. Contains code derived from juggernaut.py which is copyright 2012 Armin Ronacher. """ def __init__(self, redis_connection=None, key=None): if redis_connection is None: redis_connection = redis.StrictRedis(host=config.redis_host, port=config.redis_port) self.redis = redis_connection self.key = key if key else config.key
[docs] def publish(self, channels, data, **options): """Publish data to one ore more channels. :param channels: Channel or list of channels. :param data: Data to publish. Must be json-encodable. :param \*\*options: Additional keys to set in the hash passed to redis.publish(). """ if isinstance(channels, basestring): channels = [channels] d = {'data': data} d.update(options) data = json.dumps(d) for channel in channels: self.redis.publish("%s:%s" % (self.key, channel), data)

Project Versions