Skip to main content

Python gRPC client for NATS Go sidecar

Project description

bq-nats-client

Python gRPC client for the NATS Go daemon. Exposes publish, subscribe, and JetStream operations via a thin async API that mirrors nats.py.

Architecture

Python app  ──gRPC (Bearer JWT)──►  Go daemon  ──NATS──►  NATS server

The Go daemon runs as its own deployment and owns the NATS connection. This library only connects to it over gRPC — it does not start or bundle the daemon. On the first call the client authenticates with its api-key, gets a short-lived JWT, and attaches it to every request automatically.

Install

pip install bq-nats-client

Configuration

The client reads these env vars (explicit constructor args take precedence):

Env Meaning Default
BQ_NATS_GRPC_ADDR address of the running daemon localhost:50052
BQ_NATS_API_KEY api-key the daemon verifies (→ JWT)
BQ_NATS_TLS_CA CA cert to verify the daemon's TLS cert — (plaintext)

Usage

import asyncio
from nats_client import NATSClient, Msg

async def main():
    # grpc_addr + api_key come from env, or pass explicitly:
    nc = NATSClient(grpc_addr="localhost:50052", api_key="<prime-api-key>")

    # plain publish
    await nc.publish("orders.new", b'{"id": 1}')

    # JetStream
    await nc.jetstream()
    ack = await nc.js_publish("orders.new", b'{"id": 2}')
    print(f"ack: stream={ack.stream} seq={ack.seq}")

    # subscribe
    async def on_msg(msg: Msg):
        print(f"[{msg.subject}] {msg.data}")

    await nc.subscribe("orders.>", cb=on_msg)
    await asyncio.sleep(10)
    await nc.close()

asyncio.run(main())

API

NATSClient(grpc_addr=None, api_key=None, tls_ca=None)

Method Description
publish(subject, payload, reply, headers) Core NATS publish
jetstream(prefix, domain, timeout) Configure JetStream context (call once)
js_publish(subject, payload, ...)PubAck JetStream publish
subscribe(subject, cb, queue, ...)Task Subscribe; cb fires per message
close() Cancel subscribers and close gRPC channel

Requirements

  • Go daemon running as a separate process/deployment (just run, or a compiled go/dist binary)
  • NATS server reachable from the daemon
  • A valid api-key for the daemon to verify

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

bq_nats_client-0.1.3.tar.gz (62.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bq_nats_client-0.1.3-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file bq_nats_client-0.1.3.tar.gz.

File metadata

  • Download URL: bq_nats_client-0.1.3.tar.gz
  • Upload date:
  • Size: 62.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.22

File hashes

Hashes for bq_nats_client-0.1.3.tar.gz
Algorithm Hash digest
SHA256 053543c837484ab7b005a7c06c374105a907c4d79860701cb64331c83b7e4cb1
MD5 49c037c6c34037960515b8838a7a6340
BLAKE2b-256 e20551f7d91b50d3ead25d55fa362d15532bcdb0ef37fbb40f51c6b82c47b5b8

See more details on using hashes here.

File details

Details for the file bq_nats_client-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for bq_nats_client-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c6b52e4d904577903d005ffdbe0f8293ff929664bf2a2d653c7db1fec177c8bb
MD5 42b14096626ca66abe8f9e42ec7626f1
BLAKE2b-256 43a364bfff655198d03eaf15db17704a002809b906ca5186a80b999c67a51e12

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