Exemplo — Worker em Python

Um worker em segundo plano que processa mensagens de uma fila.

Estrutura do projeto

worker/
├── worker.py
└── requirements.txt

Código

requirements.txt

redis
celery

worker.py

import os
import time
import redis
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

# Conecta ao Redis (configure no console se necessário)
redis_url = os.environ.get('REDIS_URL', 'redis://localhost:6379')
redis_client = redis.from_url(redis_url)

def process_message(message):
    """Processa uma única mensagem."""
    logger.info(f"Processando: {message}")
    time.sleep(2)  # Simula trabalho
    logger.info(f"Concluído: {message}")
    return True

def main():
    logger.info("Worker iniciado")
    while True:
        # Bloqueia até que uma mensagem esteja disponível
        message = redis_client.blpop('tasks', timeout=5)
        if message:
            data = message[1].decode('utf-8')
            process_message(data)

if __name__ == '__main__':
    main()

Configuração no console

Configure o worker no console com origem GitHub e as variáveis de ambiente necessárias.

Publicação

  1. Envie o código para um repositório GitHub.
  2. No console, escolha Origem de Projeto como Repositório GitHub.
  3. Selecione a branch principal e crie o projeto.
  4. Faça push para atualizar o worker automaticamente.

Enviar uma tarefa

# A partir de outro serviço ou da sua máquina local
redis-cli -h $REDIS_HOST LPUSH tasks '{"type": "email", "to": "[email protected]"}'

Logs esperados

INFO:worker:Worker iniciado
INFO:worker:Processando: {"type": "email", "to": "[email protected]"}
INFO:worker:Concluído: {"type": "email", "to": "[email protected]"}

Próximos exemplos