Redis stack

class bachata.redis.RedisMessagesCenter(loop=None, conn_params=None, reliable=False)[source]

Messages center on top of Redis LPUSH / BRPOP pattern.

After creating messages center instance init() coroutine also must be called.

Parameters:
  • loop – asyncio event loop
  • conn_params – Redis connection params as dict
  • reliable – Use reliable queue or simple queue, default is False
init()[source]

Setup main Redis connection for queue.

class bachata.redis.RedisQueue(loop=None, conn_params=None)[source]

Messages queue on top of Redis LPUSH / BRPOP pattern.

Schema description:

  1. Messages are LPUSH’ed to list with “{channel}” key.
  2. Receiver just listens for “{channel}” list updates with BRPOP.
Parameters:
  • loop – asyncio event loop
  • websocket – WebSocket handler instance
  • conn_params – Redis connection params
add_socket(channel, websocket, proto=None)[source]

Register WebSocket for receiving messages from channel.

Parameters:
  • channel – String channel identifier, based on user id or some hash string
  • websocket – Tornado WebSocket handler instance
  • proto – Messages protocol instance
connect()[source]

Setup main Redis connection.

del_socket(channel, websocket, proto=None)[source]

Unregister WebSocket from receiving messages from channel.

Parameters:
  • channel – String channel identifier, based on user id or some hash string
  • websocket – Tornado WebSocket handler instance
  • proto – Messages protocol instance
listen_queue(channel, websocket)[source]

Start queue listener for channel and WebSocket connection.

put_message(channels, message, proto=None, from_channel=None)[source]

Put messages on queue.

Parameters:
  • channels – List of destination channels
  • message – Message dict object
  • proto – Messages protocol instance
  • from_channel – Message from channel