kfk_mng
Atomic Kafka connection manager. Регистрирует Kafka producers / consumers по alias, скрывает aiokafka boilerplate.
Установка
pip install kfk_mng
Возможности
- ✅ Регистрация Kafka подключений по alias
- ✅ Producer + Consumer пара (
KafkaComponents) под одним alias - ✅ Поддержка SSL / SASL
- ✅ Lazy start adapters (нет старта пока не вызвал send/getmany)
- ✅ Async API через
aiokafka - ✅ Manual offset commit по умолчанию (надёжность)
Быстрый старт
import kfk_mng
# Регистрация (один раз при старте процесса)
kfk_mng.register(
alias="default",
bootstrap_servers="kafka:9092",
enable_producer=True,
enable_consumer=True,
consumer_topics=["events"],
consumer_group_id="my-workers",
)
# Получение
components = kfk_mng.get("default")
producer = components.producer
consumer = components.consumer
# Использование
metadata = await producer.send(topic="events", value=b"hello")
records = await consumer.getmany(timeout_ms=1000, max_records=10)
await consumer.commit()
# Закрытие
await kfk_mng.close("default")
С SSL и SASL
kfk_mng.register(
alias="prod",
bootstrap_servers="kafka.prod:9093",
security_protocol="SASL_SSL",
ssl_conf={"cafile": "/path/ca.pem"},
sasl_conf={
"mechanism": "PLAIN",
"username": "user",
"password": "secret",
},
enable_producer=True,
)
Multi-instance
kfk_mng.register(alias="default", bootstrap_servers="kafka:9092", enable_producer=True)
kfk_mng.register(alias="dlq", bootstrap_servers="dlq-kafka:9092", enable_producer=True)
await kfk_mng.get("default").producer.send("events", b"x")
await kfk_mng.get("dlq").producer.send("dead-letters", b"y")
Одноразовое подключение (без регистрации)
components = kfk_mng.connect(
bootstrap_servers="kafka:9092",
enable_producer=True,
)
await components.producer.start()
# ... use ...
await components.producer.stop()
API
| Функция | Описание |
|---|---|
register(alias, bootstrap_servers, ...) |
Зарегистрировать producer / consumer под alias |
get(alias) |
Вернуть KafkaComponents по alias |
connect(bootstrap_servers, ...) |
Создать KafkaComponents без регистрации |
close(alias) |
Остановить и удалить из реестра |
close_all() |
Остановить все зарегистрированные |
| Класс | Описание |
|---|---|
KafkaComponents |
dataclass с producer / consumer |
KafkaProducerAdapter |
Обёртка над AIOKafkaProducer (lazy start, send) |
KafkaConsumerAdapter |
Обёртка над AIOKafkaConsumer (lazy start, getmany, commit) |
Сопутствующие библиотеки
kafka_rpc_pubsub— Pydantic-typed Kafka pub/sub поверхkfk_mng
License
MIT
Metadata
Release files for kfk-mng 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kfk_mng-1.0.1.tar.gz | 4.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kfk_mng-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.1 kB
Release files / kfk_mng-1.0.1.tar.gz
| Download URL | kfk_mng-1.0.1.tar.gz |
|---|---|
| Size | 4.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a5aabbbd79627bca1c0661ca7ff7a65ad140a9538ac784db077a5114c1a39a10
|
|
BLAKE2b-256 checksum How to use checksums |
fb46e864e0fd6d897f909af1f10e29ef91e486b69ed27919750c9bf0a3828c6c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.0
|
Release files / kfk_mng-1.0.1-py3-none-any.whl
| Download URL | kfk_mng-1.0.1-py3-none-any.whl |
|---|---|
| Size | 6.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
eb2dce401614b3d74faa48739ea0d04267dea4a6dfb675af5b57a32359802cf4
|
|
BLAKE2b-256 checksum How to use checksums |
abd805898340469d51890103f98dd728af13314cc029b19c3190fcafd0ecdcf9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.0
|