Skip to main content
# Franz

A lite wrapper around [Kafka](https://kafka.apache.org/) and [RabbitMQ](https://www.rabbitmq.com/).

# Usage

## Installation
- `pip install franz` (recommended)
- `pip -e git+git@github.com:eshares/franz.git@master#egg=franz`
- Change `@master` to a version or commit if required.

## RabbitMQ
### Sending a message
```python
import random
import time

import franz


class FranzData(franz.FranzEvent):
def serialize(self):
return {'data': time.time()}


with franz.RabbitProducer(exchange='topic_link') as p:
while True:
key = random.choice(['hello.world', 'hello.bob'])
p.send_message(key, FranzData())
time.sleep(1)
```

### Consuming messages
```python
import franz

def callback(ch, method, properties, body):
print('[+] {} from {}'.format(body, method.routing_key))

with franz.RabbitConsumer('hello.*', exchange='topic_link') as c:
c.consume_messages(callback)
```


## Kafka
### Sending a message
```python
import franz
from myapp.models import SomeModel # SomeModel must inherit `franz.FranzEvent`

instance = SomeModel.objects.get(pk=1)
producer = franz.KafkaProducer()
producer.send_message('TopicA', instance)
```

### Consuming messages
```python
import franz

consumer = franz.KafkaConsumer('TopicA')
for message in consumer:
print(message.value)
```

### Kafka/Docker Resources

- [Docker image](https://github.com/spotify/docker-kafka)
- [Helpful article](https://howtoprogram.xyz/2016/07/21/using-apache-kafka-docker/)
- Create topic
```
./kafka-topics.sh --create --topic test --replication-factor 1 --partitions 1 --zookeeper 0.0.0.0:2181
```
- Consuming
```
./kafka-console-consumer.sh --topic test --from-beginning --zookeeper 0.0.0.0:2181
```
- Producing
```
./kafka-console-producer.sh --topic test --broker-list 0.0.0.0:9092
```

# Testing
```bash
# setup versions
pyenv install 3.5.3
pyenv install 3.6.3
pyenv install 3.7.0
pyenv virtualenv franz 3.5.3
pyenv local franz 3.5.3 3.6.3 3.7.0
pip install -r requirements-dev.txt

# run tests (python 3.5, 3.6, 3.7)
tox
```

Release files for franz 0.0.11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for franz 0.0.11
File Size Uploaded
franz-0.0.11.tar.gz 6.5 kB Details

Release files / franz-0.0.11.tar.gz

Download URL franz-0.0.11.tar.gz
Size 6.5 kB
Tags Source
SHA-256 checksum
How to use checksums
5620600b411103b0c79526336b8eaef773b5eb1d8e9e0fb4bdc01ebd6bf9c2a7
BLAKE2b-256 checksum
How to use checksums
aad1ab06bf664b057f112579ca80c683936785a76870d378033ae5a0f2bfbace
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.0.11 This release

1 release file

0.0.10

1 release file

0.0.9

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page