Arquitetura recomendada
Por que fila?
- Limite de 2 jobs simultâneos por projeto
- Downloads demoram — não bloqueie HTTP do usuário
- Retry automático em falhas transitórias
Fluxo do worker
1
Receber job da fila
Payload:
{ "url": "...", "format": "video_best", "userId": "..." }2
Resolve (se necessário)
POST /media/resolve → media_id3
Enfileirar download
POST /media/download → job_id4
Polling
GET /jobs/{id} até completed5
Persistir
Baixar
download_url → upload S3 → salvar URL permanente no DB