Redis · Celery · Python

Pedro Fonseca · · 5 min de leitura

Neste artigo

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:

  • 🧾 Redis é o funcionário que organiza e segura os pedidos anotados (uma espécie de quadro de recados)
  • 👨‍🍳 Celery é o responsável por executar os pedidos da fila assim que tiver tempo (ou recursos).

Aplicando para código

tree
kitchen/
├── celery_core.py
├── tasks.py
└── main.py
  • celery_core.py
python
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
python
# 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!"
  • main.py
python
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))

Continue lendo

Sobre o autor

Pedro Fonseca

Engenheiro de software especializado em backend, Python e sistemas distribuídos.