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.publish(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.4.1.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

garlic-0.4.1-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: garlic-0.4.1.tar.gz
  • Upload date:
  • Size: 4.8 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.4.1.tar.gz
Algorithm Hash digest
SHA256 85872519c2f5b5c8de279872a323a278d5f37e1cdf210c139d7bbe9dce4c55f7
MD5 75e63673172859e6cb0de5630e17881f
BLAKE2b-256 499ff08d76eb720ace7f950f5474dd13d2ea67e892b98ba9d7aa23b34228c5dd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: garlic-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 6.3 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.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 54b6d93dab30e9e22cf82aea829cde8384bd4fdd34b7419392c611b5b760e5e7
MD5 1e9888558613bab420b621fd1e7324ff
BLAKE2b-256 2688bafb99f06793629bc82d2d4fe727889193d532ba0c0d3fbbfe145470e089

See more details on using hashes here.

Supported by

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