Written with native Asyncio NSQ package
python -m pip install ansq
Reader— high-level class for building consumers withnsqlookupdsupportWriter— high-level producer class supporting async publishing of messages tonsqdover the TCP protocolNSQConnection— low-level class representing a TCP connection tonsqd:- full TCP wrapper
- one connection for
subandpub - 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/activateInstall ansq in editable mode and its testing dependencies.
python -m pip install -e .[testing]Run tests.
pytest