Exemplo — Worker em Python
Um worker em segundo plano que processa mensagens de uma fila.
Estrutura do projeto
worker/
├── worker.py
└── requirements.txtCódigo
requirements.txt
redis
celeryworker.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
- Envie o código para um repositório GitHub.
- No console, escolha Origem de Projeto como Repositório GitHub.
- Selecione a branch principal e crie o projeto.
- 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]"}