Metadata-Version: 2.1
Name: asyncnsq
Version: 1.0.0
Summary: asyncio async/await nsq support
Home-page: https://github.com/aohan237/asyncnsq
Author: aohan237
Author-email: aohan237@gmail.com
License: MIT
Platform: POSIX
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Operating System :: POSIX
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Requires-Dist: python-snappy

asyncnsq
========

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

Latest Updates
--------------

-  support dpub
-  support lookupd_http

Install
-------

pip install asyncnsq

Usage examples
--------------

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:
            self.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())

Requirements
------------

-  Python\_ 3.5+ https://www.python.org
-  nsq\_ http://nsq.io

-  python-snappy

   1. ubuntu:

      -  sudo apt-get install libsnappy-dev
      -  pip install python-snappy

   2. centos:

      -  sudo yum install snappy-devel
      -  pip install python-snappy

   3. mac:

      -  brew install snappy # snappy library from Google
      -  CPPFLAGS=“-I/usr/local/include -L/usr/local/lib” pip install
         python-snappy

License
-------

The asyncnsq is offered under MIT license.


