-
Notifications
You must be signed in to change notification settings - Fork 18
Description
Atualmente temos dois endpoints na API que lidam com o scrapping dos sites.
/screening/scrap
: faz a raspagem dos dados e depois a importação/screening/import
: recebe o arquivo .json pronto e faz a importação para o banco de dados
Em ambos os casos, o processo acontece na thread principal (a requisição HTTP só completa depois do processo inteiro finalizar). Disso decorrem alguns problemas pois o processamento pode ser demorado, e temos problemas com timeouts tanto no nível da aplicação (o gunicorn tem um tempo definido para timeout dos workers) quanto no web server (o NGINX também corta as requisições em algumas situações).
Idealmente nós teriamos um sistema onde a API recebe o pedido de raspagem ou importação e joga essa pedido em uma fila, retornando a requisição HTTP rapidamente e depois permitindo o usuário consultar o status dos processos.
Uma sugestão por @niltonpimentel02 é o uso da lib python-rq
podemos usar o Flask-RQ pra fazer isso usando filas.. não sei se tu já mexeu com essa ferramenta em específico mas é tipo um Celery só que mais simples de configurar :fiesta-parrot: https://flask-rq.readthedocs.io/en/stable/
Mas tem que ser levado em conta que a VM do projeto só tem 2gbs de ram, precisaria testar se é o bastante pra rodar o redis