Metadata-Version: 2.1
Name: kafka-client-new
Version: 0.4.dev2
Summary: 
Author: Mark Poroshin
Author-email: mporoshin@smartpredictiontech.ru
Requires-Python: >=3.9,<3.13
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: apscheduler (>=3.10.1,<4.0.0)
Requires-Dist: kafka-python (>=2.0.2,<3.0.0)
Requires-Dist: lz4 (>=4.3.2,<5.0.0)
Requires-Dist: pandas (>=2.1.1,<3.0.0)
Requires-Dist: prometheus-client (==0.15.0)
Description-Content-Type: text/markdown

## KAFKA-CLIENT-NEW

### Примеры использования:

### Через manager

```python
import json
import logging

from kafka_client import (
    DefaultBatchKafkaManager, 
    DefaultBatchProducer, 
    DefaultBatchConsumer,
)
from kafka_client.handler import EmptyHandler

logging.basicConfig(level=logging.INFO)


if __name__ == '__main__':
    batch_size = 10
    consumer_settings = {
        'bootstrap_servers': '...',
        'value_deserializer': lambda v: json.loads(v.decode('utf-8')),
        'key_deserializer': lambda k: k.decode('utf-8'),
        'client_id': '...',
        'group_id': '...',
        'enable_auto_commit': False,
        'auto_offset_reset': 'earliest'
    }
    consumer = DefaultBatchConsumer(
        topic='...',
        batch_size=batch_size,
        consumer_settings=consumer_settings
    )
    
    producer_settings = {
        'bootstrap_servers': '...',
        'key_serializer': str.encode,
        'value_serializer': lambda v: json.dumps(v).encode('utf-8'),
    }
    producer = DefaultBatchProducer(topic='...', producer_settings=producer_settings)
    
    manager = DefaultBatchKafkaManager(consumer, producer)
    manager.set_handler(handler=EmptyHandler())
    manager.run()
```

#### Через функцию run

задаем переменные окружения


 - `BATCH_SIZE` [optional] - размер батча
 - `BOOTSTRAP_SERVERS` - брокеры кафки
 - `INPUT_TOPIC` - входной топик
 - `OUTPUT_TOPIC` - выходной топик
 - `CLIENT_ID` [optional] - имя приложения, как то отсылается в кафку
 - `GROUP_ID` - kafka consumer group

Запускаем `python`:

```python
import logging

from kafka_client import run
from kafka_client.handler import EmptyHandler

logging.basicConfig(level=logging.INFO)


if __name__ == '__main__':
    run(handler=EmptyHandler())
```
