DEV Community

Dhiraj Patra
Dhiraj Patra

Posted on

Django Kafka

How to develop a basic outline of an end-to-end Python application using Django, Django Rest Framework (DRF), and Apache Kafka. Below is an example demo application code to get you started:


# 1. Set up Django project

# Create a Django project

django-admin startproject myproject



# Create a Django app

python manage.py startapp myapp



# 2. Install required packages

pip install django djangorestframework kafka-python



# 3. Configure Kafka

# Assuming Kafka is running locally on default ports



# 4. Configure Django settings.py

# Add 'rest_framework' and 'myapp' to INSTALLED_APPS

# Configure Kafka settings if necessary



# 5. Define Django models in models.py (in myapp)

from django.db import models



class Message(models.Model):

    content = models.CharField(max_length=255)

    created_at = models.DateTimeField(auto_now_add=True)



    def __str__(self):

        return self.content



# 6. Define DRF serializers in serializers.py (in myapp)

from rest_framework import serializers

from .models import Message



class MessageSerializer(serializers.ModelSerializer):

    class Meta:

        model = Message

        fields = ['id', 'content', 'created_at']



# 7. Define DRF views in views.py (in myapp)

from rest_framework import viewsets

from .models import Message

from .serializers import MessageSerializer



class MessageViewSet(viewsets.ModelViewSet):

    queryset = Message.objects.all()

    serializer_class = MessageSerializer



# 8. Configure Django URLs in urls.py (in myapp)

from django.urls import path, include

from rest_framework.routers import DefaultRouter

from .views import MessageViewSet



router = DefaultRouter()

router.register(r'messages', MessageViewSet)



urlpatterns = [

    path('', include(router.urls)),

]



# 9. Produce messages to Kafka (producer.py)

from kafka import KafkaProducer



producer = KafkaProducer(bootstrap_servers='localhost:9092')



def send_message(msg):

    producer.send('my-topic', msg.encode())



# Example usage:

send_message("Hello Kafka!")



# 10. Consume messages from Kafka (consumer.py)

from kafka import KafkaConsumer



consumer = KafkaConsumer('my-topic', bootstrap_servers='localhost:9092')



for message in consumer:

    print ("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,

                                          message.offset, message.key,

                                          message.value.decode('utf-8')))



# 11. Run Django server

python manage.py runserver

Enter fullscreen mode Exit fullscreen mode

This setup will provide you with a basic Django project integrated with Django Rest Framework and Kafka. You can extend it further based on your application requirements. Let me know if you need more detailed explanations or assistance with any specific part!

Top comments (0)