Skip to main content

Django + Pydantic + Kafka

Project description

djpykafka

🚧 This project is WIP and is subject to change at any time

This project is currently in the alpha state, even though it can be used in production with some caution. Make sure to fix the version in your requirements.txt and review changes frequently.

Installation

pip install djpykafka

Examples

Add the KafkaPublishMixin to your model class.

from django.db import models
from djpykafka.models import KafkaPublishMixin


class MyModel(KafkaPublishMixin, models.Model):
    ...

Create a publisher class, e.g. at events/publish/{modelname_plural}.py

from djpykafka.events.publish import EventPublisher, DataChangePublisher
from ... import models
from ...schemas import response
from . import connection


class MyModelPublisher(
    DataChangePublisher,
    EventPublisher,
    orm_model=models.MyModel,
    event_schema=response.MyModel,
    connection=connection,
    topic='bizberry.access.users',
    data_type='access.user',
):
    pass

AsyncAPI Docs

This feature is WIP.

Install djpykafka with the extra docs (pip install djpykafka[docs]) and add the following snippets to your asgi.py:

from starlette.responses import HTMLResponse, JSONResponse
from starlette.routing import Route
from fastapi.encoders import jsonable_encoder
from asyncapi_docgen.docs import get_asyncapi_ui_html

# ! Import after django's get_asgi_application()

from djpykafka.docs.asyncapi import get_asyncapi


def asyncapi_html(request):
    return HTMLResponse(get_asyncapi_ui_html(asyncapi_url='/asyncapi.json'))


def asyncapi_json(request):
    return JSONResponse(jsonable_encoder(get_asyncapi(), by_alias=True, exclude_none=True))


app = FastAPI(
    ...,
    routes=[
        Route('/asyncapi', asyncapi_html),
        Route('/asyncapi.json', asyncapi_json),
    ],
)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

djpykafka-0.0.44.tar.gz (22.9 kB view details)

Uploaded Source

Built Distribution

djpykafka-0.0.44-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

Details for the file djpykafka-0.0.44.tar.gz.

File metadata

  • Download URL: djpykafka-0.0.44.tar.gz
  • Upload date:
  • Size: 22.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for djpykafka-0.0.44.tar.gz
Algorithm Hash digest
SHA256 bf0e7e38592b0c2fb40716547d2860498bc059a81f01be4ffbe5ca50888446d4
MD5 9627403f5ec1d01dff220d020fdf1307
BLAKE2b-256 bab4ba3d0ef41b041d75c7c8b866d00dc4c78ee346681cd3cd5a16c128d703e3

See more details on using hashes here.

File details

Details for the file djpykafka-0.0.44-py3-none-any.whl.

File metadata

  • Download URL: djpykafka-0.0.44-py3-none-any.whl
  • Upload date:
  • Size: 25.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for djpykafka-0.0.44-py3-none-any.whl
Algorithm Hash digest
SHA256 11c7b7cc8c400b0eba58ffab9adc5929ae3658ddfdc9ff97e9b59b0bc584ed01
MD5 155f80bc7bcf9feb702d42533bc35457
BLAKE2b-256 6da11698a1dbcfa1ef73ae1b609bcd747a99bda254fe13edb8e4ca75fdd635fa

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page