Skip to main content

asyncio async/await nsq support

Project description

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:
        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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asyncnsq-0.4.3.tar.gz (15.5 kB view details)

Uploaded Source

File details

Details for the file asyncnsq-0.4.3.tar.gz.

File metadata

  • Download URL: asyncnsq-0.4.3.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for asyncnsq-0.4.3.tar.gz
Algorithm Hash digest
SHA256 d59e4c0ab70462733dd4c9c8b6d6c9cd358bb46726d068c83ad88be6df5df881
MD5 4af3c5bc2ede0bf6ca870267057a877b
BLAKE2b-256 122a2569dc07d9fdd5dc43d0bf9bbc269ae1bc1a8206931aa41c0f0b783dd8e1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page