github nats-io/nats.py nats-key-value/v0.1.0

7 hours ago

Initial release of nats-key-value, a Python client for the NATS Key-Value
store, built on nats-jetstream.

Features

  • Buckets - Create, update, and delete key-value buckets
  • Keys - Put, get, create, update, delete, and purge values
  • Optimistic concurrency - Compare-and-swap updates via revision numbers
  • History - Per-key revision history
  • TTL - Per-key time-to-live
  • Watches - Subscribe to changes with key pattern filters
  • Listing - Enumerate keys and inspect bucket statuses

Requirements

  • Python 3.13+
  • NATS server with JetStream enabled

Installation

pip install nats-key-value

Quick Start

import asyncio
from nats.client import connect
from nats.jetstream import new as new_jetstream
from nats.key_value import KeyValueConfig, create_or_update_key_value

async def main():
    client = await connect("nats://localhost:4222")
    js = new_jetstream(client)

    kv = await create_or_update_key_value(js, KeyValueConfig(bucket="config"))

    await kv.put("greeting", b"Hello World!")

    entry = await kv.get("greeting")
    print(f"{entry.key} = {entry.value.decode()} (revision {entry.revision})")

    await kv.delete("greeting")

    await client.close()

if __name__ == "__main__":
    asyncio.run(main())

Don't miss a new nats.py release

NewReleases is sending notifications on new releases.