Skip to main content

Create a event driven architecture with garlic improve your development experience

Project description

🧄 Garlic

Craft powerful Event-Driven Architectures (EDA) in Python, effortlessly. With Garlic, respond to app events, like user actions, in a snap.

Why Garlic?

Simple, Yet Robust: Drawing inspiration from tools like Celery and FastAPI, Garlic brings a fresh approach to EDA, making it approachable without sacrificing power.

  • 🚀 EDA Simplified: Want actions like email notifications or newsletter sign-ups after a user registers? Garlic streamlines these event-driven responses.
  • 📦 FastAPI Inspired: Just as FastAPI made web APIs intuitive, Garlic aims to demystify EDA.
  • 🔍 Beyond Regular Tasks: While Celery is a go-to for background tasks, Garlic emphasizes responding to events.
  • 📝 Typed and Transparent: Using Python typings, understand and control the data in your events.
  • 🔌 Flexible & Extendable: Adapt and grow Garlic according to your needs.

Coming Soon

📖 Visual Event Flows: We're building tools to visually map out your event-driven pathways, similar to how web routes are displayed in some platforms.

Get Started

  1. Install:
pip install garlic
  1. Dive In: FastAPI integration example
  • Create a file main.py with:
from fastapi import FastAPI
from garlic import Garlic, BaseEvent

bus = Garlic()

api = FastApi()


class CustomerRegisteredEvent(BaseEvent):
    name: str


@bus.subscribe()
def send_email(event: CustomerRegisteredEvent):
    pass


@bus.subscribe()
def subscribe_to_newsletter(event: CustomerRegisteredEvent):
    pass


@api.route('customer/register/')
def register_user(user: dict):
    # .... business logics  ....
    bus.emit(CustomerRegisteredEvent(
        name=user['name']
    ))
    # ... http response ...
  • Run the app with uvicorn main:api --reload
  • Send a POST request to http://localhost:8000/customer/register/ with a JSON body like {"name": "Uriel Reina"}
  • Check the terminal to see the event being published and handled by the subscribers

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

garlic-0.5.0.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

garlic-0.5.0-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file garlic-0.5.0.tar.gz.

File metadata

  • Download URL: garlic-0.5.0.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.3 Darwin/22.3.0

File hashes

Hashes for garlic-0.5.0.tar.gz
Algorithm Hash digest
SHA256 ccdc6048dd113654a20d2908350109afead1c26ce0fff71a76f4384d6de267f2
MD5 bcf90b4144ba0c58538d5016f64506bf
BLAKE2b-256 d8714166343fda95f28c7b73637c65da20ccb2ada4cf2d3a3f1f4524990ca503

See more details on using hashes here.

File details

Details for the file garlic-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: garlic-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.3 Darwin/22.3.0

File hashes

Hashes for garlic-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f500841caaf1a2b3d1bab7aa135d15e046a9cefd4d6285d0ddaa1dbc8977c8f5
MD5 9b1c2e3bd174558f91691f6493529a00
BLAKE2b-256 b66e72ad16a3715f8906730fa15f05726749d6f13c051ab3c4c7f33aa2a7e6a5

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