DEV Community

Dhiraj Patra
Dhiraj Patra

Posted on

23

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!

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay