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.5.tar.gz (12.3 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.5-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: py_kafka_producer_client-0.1.5.tar.gz
  • Upload date:
  • Size: 12.3 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.5.tar.gz
Algorithm Hash digest
SHA256 bae4ddae17feac618e93fc9808e845136a13be42c82c49711a56f06cc626cc77
MD5 c033b4e5e3239a725d487dd7493929c6
BLAKE2b-256 ed8546a1f7a6a46168fe344b5eb0621451917dcb06a479b67e55f491693605e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_kafka_producer_client-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 aaade2d970a6cbf963c38460c55bcfaf96736a952399ab16ef01ee0c66c6df8a
MD5 db02c303c195d17a34138054a76db402
BLAKE2b-256 50c0c32ce78f14d849f3675d8edeeb86489a168cba98dbc259cd6dfd36f43297

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