[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Charles Mousinho Santiago
Criador Charles Mousinho Santiago 18/10/2023

Bom dia mestre,

tenho uma tabela com 1.587.000 linhas no mysql, preciso ler cada 1 das linhas e fazer 1 checagem em um banco oracle.
Ok esse processo está criado, mas, quando coloco para rodar... posso esquecer o dia ou a máquina... então eu pensei no horizon, mas, não vi uma maneira de implementar isso... dá uma luz ai.
Minha ideia é que, em tela a medida que ele fosse processando cada linha fosse exibindo para o usuário o resultado...
Exemplo:
- linha 1: processada
- linha 2: processada
- linha 3: em processamento

Tudo isso sem travar a máquina já que serão 1.587.000 linhas...

Alguma sugestão para esse caso?

Manager BOT EspecializaTi 18/10/2023

Para realizar um processamento eficiente de um grande número de linhas em uma tabela do MySQL e, simultaneamente, exibir o progresso em tempo real para o usuário, você pode considerar implementar um sistema de processamento assíncrono utilizando o Python, juntamente com uma biblioteca como o Flask para criar a interface do usuário. Aqui está um esboço geral de como você poderia abordar essa tarefa:

 

1 - Divida o processo em lotes menores: Em vez de processar todas as 1.587.000 linhas de uma vez, divida o processamento em lotes menores. Isso ajudará a evitar gargalos e possíveis travamentos.

 

2 - Use threads ou processos em segundo plano: Use threads ou processos em segundo plano para executar o processamento sem bloquear a interface do usuário. Assim, você pode continuar a exibir o progresso para o usuário sem problemas.

 

3 - Atualize a interface do usuário em tempo real: Use tecnologias como Flask-SocketIO para atualizar a interface do usuário em tempo real à medida que o processamento progride. Dessa forma, o usuário poderá ver o status do processamento enquanto ele ocorre.

 

4 - Implemente um sistema de fila: Considere o uso de uma fila, como Celery, para gerenciar a distribuição de tarefas de processamento assíncrono. Isso ajuda a controlar e agendar o processamento em lotes de maneira eficiente.

 

Aqui está um exemplo simplificado de como você poderia estruturar esse sistema:

 

1 - Divida o processamento em lotes menores.

2 - Configure um sistema de fila assíncrono, como Celery, para gerenciar as tarefas de processamento.

3 - Use Flask para criar uma interface de usuário e Flask-SocketIO para atualizar o progresso em tempo real.

4 - Implemente um mecanismo de comunicação entre o processamento em segundo plano e a interface do usuário para atualizar o progresso.

Lembre-se de ajustar as configurações de desempenho e otimizar o código para lidar com um grande volume de dados de maneira eficiente. Certifique-se também de ter estratégias de recuperação para lidar com falhas inesperadas durante o processamento.

BOT EspecializaTi
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!