juggernaut 0.2
Client library for juggernaut.
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: |
|
|---|---|
| license: | BSD, see LICENSE for more details. |
| File | Type | Py Version | Uploaded on | Size | # downloads |
|---|---|---|---|---|---|
| juggernaut-0.2.tar.gz (md5) | Source | 2011-12-06 | 3KB | 598 | |
- Author: Armin Ronacher
- Home Page: http://github.com/mitsuhiko/python-juggernaut
- Categories
- Package Index Owner: mitsuhiko
- DOAP record: juggernaut-0.2.xml
