async nsq with python3.6 await/async supported
if you dont like the pynsq(which use tornado) way to interact with nsq, then this library may be suitable for you
you can use this library as the common way to write things
- support dpub
- support lookupd_http
pip install asyncnsq
All you need is a loop, then enjoy
Consumer:
loop = asyncio.get_event_loop()
async def go():
try:
nsq_consumer = await create_nsq_consumer(
lookupd_http_addresses=[
('127.0.0.1', 4161)],
max_in_flight=200)
await nsq_consumer.subscribe('test_async_nsq', 'nsq')
for waiter in nsq_consumer.wait_messages():
message = await waiter
print(message.body)
await message.fin()
nsq_consumer = await create_nsq_consumer(
host=['tcp://127.0.0.1:4150'],
max_in_flight=200)
await nsq_consumer.subscribe('test_async_nsq', 'nsq')
for waiter in nsq_consumer.wait_messages():
message = await waiter
print(message.body)
await message.fin()
except Exception as tmp:
logger.exception(tmp)
loop.run_until_complete(go())
Producer:
loop = asyncio.get_event_loop()
async def go():
nsq_producer = await create_nsq_producer(host='127.0.0.1', port=4150,
heartbeat_interval=30000,
feature_negotiation=True,
tls_v1=True,
snappy=False,
deflate=False,
deflate_level=0,
loop=loop)
for i in range(10):
await nsq_producer.pub('test_async_nsq', 'test_async_nsq:{i}'.format(i=i))
await nsq_producer.dpub('test_async_nsq', i * 1000,
'test_delay_async_nsq:{i}'.format(i=i))
loop.run_until_complete(go())
-
Python_ 3.5+ https://www.python.org
-
nsq_ http://nsq.io
-
python-snappy
- ubuntu:
- sudo apt-get install libsnappy-dev
- pip install python-snappy
- centos:
- sudo yum install snappy-devel
- pip install python-snappy
- mac:
- brew install snappy # snappy library from Google
- CPPFLAGS="-I/usr/local/include -L/usr/local/lib" pip install python-snappy
- ubuntu:
The asyncnsq is offered under MIT license.