[duvida] Como processar tarefas por trás dos panos
Eu estou desenvolvendo um pequeno sistema, e ele possui uma rota que leva de 1 a 5 minutos para ser concluída. Para resolver esse problema, sei que posso usar bibliotecas como o Bull para criar um sistema de filas que execute tarefas em segundo plano. No entanto, estou procurando uma forma de hospedar esse sistema gratuitamente.
Atualmente, estou utilizando a Vercel para hospedar APIs em projetos pequenos, mas o problema é que a Vercel oferece um tempo de execução de apenas 10 segundos no plano gratuito, o que não é suficiente para o meu caso. O que eu gostaria é de uma solução onde o usuário possa iniciar uma ação e a API principal, ao invés de processar a tarefa de forma síncrona, envia a solicitação para o sistema de filas, que executa a tarefa em segundo plano. No entanto, não sei onde posso hospedar esse sistema de fila gratuitamente.
Estou em busca de uma solução que permita hospedar tanto a API principal quanto o sistema de fila em um ambiente gratuito, de forma que o processamento demorado não bloqueie a API principal e os usuários possam continuar a usar o sistema normalmente enquanto as tarefas longas são tratadas em segundo plano.
Se alguém souber de alguma plataforma ou serviço gratuito que suporte esse tipo de abordagem, agradeceria muito!
Crie seu próprio servidor na Oracle: https://www.oracle.com/cloud/free/
É disponibilizada uma VM ARM gratuitamente com 24GB de RAM, 4VCPUS, 200GB de SSD, utilizo-a ha uns 4 anos
Olha, vou ser sincero: você está complicando à toa. A solução que precisa não exige filas, serviços externos ou hospedagens mágicas. O próprio protocolo HTTP já lida com requisições longas, e qualquer aplicação Node.js básica consegue processar tarefas em segundo plano usando threads ou worker threads nativas.
Se a Vercel não suporta processos longos no plano gratuito, mude de plataforma. Hospede sua API em VM Linux gratuita da AWS/GCP/Oracle. Em qualquer ambiente Linux, seu código pode rodar uma thread em paralelo sem travar a API principal.
Usar Bull ou filas é útil para sistemas complexos com alto volume, mas pelo seu relato, você só precisa de um simples pool de threads na própria aplicação. Está inventando problema onde não existe, provavelmente por não dominar conceitos básicos de concorrência.
Minha dica: estude como funcionam worker threads no Node.js, ajuste seu código para delegar a tarefa demorada a uma thread separada e hospede seu projeto em um lugar que não limite. Pare de correr para soluções complexas antes de entender o básico.
Um abraço de bons estudos!