Pedro Fonseca

Omnes enim Christus, nihil sine Maria

Redis + Celery (para não esquecer, no caso eu).

Se eu sou um chefe de cozinha, estou coordenando toda a operação: desde o preparo de pratos até a entrega final. Mas se chega um novo pedido, eu não consigo parar tudo e fazer ele na hora.

Então o que eu faço?

Eu anoto o pedido em um papel e coloco na fila para fazer assim que possível.

Nesse cenário:

Aplicando para código

kitchen/
├── celery_core.py
├── tasks.py
└── main.py
from celery import Celery

celery_app = Celery(
    'kitchen',
    broker='redis://localhost:6379/0',
    backend='redis://localhost:6379/0'
)

celery_app.conf.task_routes = {
    'tasks.prepare_dish': {'queue': 'dishes'},
}
# tasks.py
from celery_core import celery_app
import time

@celery_app.task
def prepare_dish(dish_name: str) -> str:
    print(f"👨‍🍳 Iniciando o preparo de {dish_name}...")
    time.sleep(3)  # leve em consideração o tempo de preparo
    print(f"✅ {dish_name} está pronto!")
    return f"{dish_name} está pronto!"
from tasks import prepare_dish

print("Novo pedido: Camarão com catupiry")
result = prepare_dish.delay("Camarão com catupiry")

# espera o resultado
print(result.get(timeout=10))

GitHub | Linkedin | YouTube