PGChannelListener

Polls for NOTIFY event from postgres on a given channel and puts received notifications into a result queue.

Class Documenation

class gdbpool.channel_listener.PGChannelListener(q, pool, channel_name)[source]

Bases: object

A Listener for Postgres LISTEN/NOTIFY channels using gevent.

For each channel there will be one PGChannelListener instance that fans notifications out to the subscribed Queue

Create a Listener for a channel_name and pass the notifications to q result Queue.

Parameters:
  • q (gevent.Queue) – Queue to pass asynchronous payloads to
  • pool (gDBPool.DBConnectionPool) – Connection pool to get a connection from and execute LISTEN <channel_name>; on if no other instance listens on that channel already. In the latter case the q is just being subscribed to the channel.
  • channel_name (string) – channel to listen on. (LISTEN <channel_name>;)
Return type:

PGChannelListener

Returns:

The PGChannelListener instance handling the channel

listen(unmarshaller=<function pipe_colon_unmarshall at 0x29a52a8>)[source]

Subscribe to the channel and send notification payloads to the results Queue.

Parameters:unmarshaller (function) – Function to pass the notify.payload string into for unmarshalling into python object (ie. dict) data
unregister_queue(q_id)[source]

Unregister a Queue from its channel.

If it was the last subscriber stop listening on the channel and put the connection used back onto the pool.

Parameters:q_id – The id() of the Queue to be unsubscribed from the channel
gdbpool.channel_listener.pipe_colon_unmarshall(payload_string)[source]

Convert a pipe seperated string of <key:value> pairs to a dict

Parameters:payload_string (string) –
Return type:dict
Returns:unmarshalled NOTIFY data

Table Of Contents

Previous topic

Class Documentation

Next topic

DBConnectionPool

This Page