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
- Install:
pip install garlic
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | ccdc6048dd113654a20d2908350109afead1c26ce0fff71a76f4384d6de267f2 |
|
MD5 | bcf90b4144ba0c58538d5016f64506bf |
|
BLAKE2b-256 | d8714166343fda95f28c7b73637c65da20ccb2ada4cf2d3a3f1f4524990ca503 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f500841caaf1a2b3d1bab7aa135d15e046a9cefd4d6285d0ddaa1dbc8977c8f5 |
|
MD5 | 9b1c2e3bd174558f91691f6493529a00 |
|
BLAKE2b-256 | b66e72ad16a3715f8906730fa15f05726749d6f13c051ab3c4c7f33aa2a7e6a5 |