Skip to main content

High-performance, reusable Kafka producer library with synchronous and asynchronous support.

Project description

kafka-producer-client

Reusable Kafka producer library — install once, use across all your Python projects.
Works in sync scripts, FastAPI, Django, Celery, or any async framework.

Install

# From your private registry / git
pip install py-kafka-producer-client

# Or directly from git
pip install git+https://github.com/your-org/kafka-producer-client.git

Quick Start

1. Sync usage (scripts, Django, Celery workers)

from kafka_producer_client import KafkaProducerClient, KafkaProducerConfig

config = KafkaProducerConfig(
    bootstrap_servers="broker1:9092,broker2:9092",
    default_topic="user-events",
    client_id="my-service",
)

producer = KafkaProducerClient(config)

# Single event
producer.send({"user": "alice", "action": "login"})

# Batch
producer.send_batch([
    {"user": "alice", "action": "login"},
    {"user": "bob", "action": "signup"},
])

# Flush before exit
producer.flush()

2. Async usage (FastAPI)

from fastapi import FastAPI, Depends
from kafka_producer_client import KafkaProducerConfig
from kafka_producer_client.fastapi import create_lifespan, get_producer

config = KafkaProducerConfig(
    bootstrap_servers="broker:9092",
    default_topic="api-events",
)

app = FastAPI(lifespan=create_lifespan(config))

@app.post("/events")
async def post_event(producer=Depends(get_producer)):
    result = await producer.send_async({"event": "click"})
    return result

3. Async usage (standalone asyncio)

import asyncio
from kafka_producer_client import KafkaProducerClient, KafkaProducerConfig

async def main():
    client = KafkaProducerClient(KafkaProducerConfig(
        bootstrap_servers="broker:9092",
    ))
    client.start_background_poll()

    result = await client.send_async(
        {"order_id": 123},
        topic="orders",
        key="order-123",
    )
    print(result)  # {"topic": "orders", "partition": 0, "offset": 42}

    client.close()

asyncio.run(main())

Configuration

All fields on KafkaProducerConfig are optional with sensible defaults:

Field Default Description
bootstrap_servers localhost:9092 Kafka broker addresses
client_id kafka-producer-client Client identifier
default_topic None Fallback topic if none given at send
acks all Broker ack level
retries 3 Send retry count
linger_ms 5 Micro-batching delay (ms)
compression_type snappy Message compression
enable_idempotence True Exactly-once semantics
batch_size 16384 Batch size in bytes
batch_num_messages 100 Max messages per batch
extra {} Any additional librdkafka config

Passing extra librdkafka config

config = KafkaProducerConfig(
    bootstrap_servers="broker:9092",
    extra={
        "security.protocol": "SASL_SSL",
        "sasl.mechanism": "PLAIN",
        "sasl.username": "key",
        "sasl.password": "secret",
    },
)

API Reference

KafkaProducerClient

Method Returns Description
send(value, ...) None Fire-and-forget produce
send_batch(events) int Produce many, returns count
send_async(value) dict Await broker ACK, returns offset metadata
send_batch_async() list[dict] Concurrent async batch
flush(timeout) int Block until queue drains
close() None Flush + stop poll thread
start_background_poll() None Start daemon poll thread
queue_length int (property) Messages still in internal queue

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

py_kafka_producer_client-0.1.1.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

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

py_kafka_producer_client-0.1.1-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file py_kafka_producer_client-0.1.1.tar.gz.

File metadata

  • Download URL: py_kafka_producer_client-0.1.1.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for py_kafka_producer_client-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ac2575324072b6605c880df05585800434f67c30ec3cd717637b996d9502dd41
MD5 a4797f9ecef4fe230e6bc4590421f0c3
BLAKE2b-256 2df88b8349876157ba29e8f21da4fd8d0e5bf61bbcfdcf8f87ed96a0acf304b0

See more details on using hashes here.

File details

Details for the file py_kafka_producer_client-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for py_kafka_producer_client-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b1eac95728e533f9f0b7ca8fee365b00d34476bd7c4e4f98c35cebe2e5ff8801
MD5 a3b288bef458224f4901ddf047c57267
BLAKE2b-256 e447c8d1c4815baeabb8dc6d162921dccb6aebe0fbfc73e90f02f54eb919e076

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