A gevent based python client for NSQ distributed messaging platform.
Features include:
- Free software: BSD license
- Documentation: https://gnsq.readthedocs.org
- Battle tested on billions and billions of messages </sagan>
- Based on gevent for fast concurrent networking
- Fast and flexible signals with Blinker
- Automatic nsqlookupd discovery and back-off
- Support for TLS, DEFLATE, and Snappy
- Full HTTP clients for both nsqd and nsqlookupd
At the command line:
$ easy_install gnsq
Or even better, if you have virtualenvwrapper installed:
$ mkvirtualenv gnsq
$ pip install gnsq
Currently there is support for Python 2.6 and Python 2.7. Support for Python 3 is dependent on gevent support.
First make sure nsq is installed and running. Next create a nsqd connection and publish some messages to your topic:
import gnsq
conn = gnsq.Nsqd(address='localhost', http_port=4151)
conn.publish('topic', 'hello gevent!')
conn.publish('topic', 'hello nsq!')
Then create a Reader to consume messages from your topic:
reader = gnsq.Reader('topic', 'channel', 'localhost:4150')
@reader.on_message.connect
def handler(reader, message):
print 'got message:', message.body
reader.start()
Optional snappy support depends on the python-snappy package which in turn depends on libsnappy:
# Debian
$ sudo apt-get install libsnappy-dev
# Or OS X
$ brew install snappy
# And then install python-snappy
$ pip install python-snappy
Feedback, issues, and contributions are always gratefully welcomed. See the contributing guide for details on how to help and setup a development environment.