Written with native Asyncio NSQ package
python -m pip install ansq
Reader
— high-level class for building consumers withnsqlookupd
supportWriter
— high-level producer class supporting async publishing of messages tonsqd
over the TCP protocolNSQConnection
— low-level class representing a TCP connection tonsqd
:- full TCP wrapper
- one connection for
sub
andpub
- self-healing: when the connection is lost, reconnects, sends identify and auth commands, subscribes to previous topic/channel
- SUB
- PUB
- Discovery
- Backoff
- TLS
- Deflate
- Snappy
- Sampling
- AUTH
A simple consumer reads messages from "example_topic" and prints them to stdout.
import asyncio
import ansq
async def main():
reader = await ansq.create_reader(
topic="example_topic",
channel="example_channel",
)
async for message in reader.messages():
print(f"Message: {message.body}")
await message.fin()
await reader.close()
if __name__ == "__main__":
asyncio.run(main())
A simple producer sends a "Hello, world!" message to "example_topic".
import asyncio
import ansq
async def main():
writer = await ansq.create_writer()
await writer.pub(
topic="example_topic",
message="Hello, world!",
)
await writer.close()
if __name__ == "__main__":
asyncio.run(main())
Create and activate a development virtual environment.
python -m venv venv
source venv/bin/activate
Install ansq
in editable mode and its testing dependencies.
python -m pip install -e .[testing]
Run tests.
pytest