Skip to content

Processar raspagem/importação de dados em worker ou background process #133

@guites

Description

@guites

Atualmente temos dois endpoints na API que lidam com o scrapping dos sites.

  1. /screening/scrap: faz a raspagem dos dados e depois a importação
  2. /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

Metadata

Metadata

Assignees

No one assigned

    Labels

    devopsIssues relacionadas a infra estrutura e automações do projetoenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions