Client library for juggernaut.
Project description
Dead simple Python library that connects to a juggernaut via redis. It also provides a very basic roster implementation that can be used as a daemon process to manage online users.
Basic usage
How to send a message to all subscribers of a channel:
from juggernaut import Juggernaut jug = Juggernaut() jug.publish('channel', {'message': 'Hello World!'})
Connection Events
Juggernaut also allows you to subscribe to events (new subscription, unsubscribe event) so that you can respond to users going online and offline:
from juggernaut import Juggernaut jug = Juggernaut() for event, data in jug.subscribe_listen(): if event == 'subscribe': ... elif event == 'unsubscribe': ...
Since this is quite common this library also implements a Roster that can group multiple connections to the same user. For grouping this it uses a key in the meta part of the message. The default is user_id in the meta object.
Example usage:
from juggernaut import Juggernaut, RedisRoster jug = Juggernaut() roster = RedisRoster(jug) roster.run()
By default it keeps the number of online users in redis so that you can use the roster class to see if users are online:
>>> roster.get_online_users() [42, 23] >>> roster.is_user_online(42) True >>> roster.is_user_online(99) False
If you want to respond to users signing in and out you need to override the on_signed_in and on_signed_out methods:
class MyRoster(RedisRoster): def on_signed_in(self, user_id): print 'User signed in', user_id def on_signed_out(self, user_id): print 'User signed out', user_id
You can for instance use juggernaut to broadcast that to other users that signed in.
- copyright:
2011 by Armin Ronacher.
- license:
BSD, see LICENSE for more details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.