processo cron duplicado - python pm2

processo cron duplicado - python pm2

Nossa configuração consiste em um aplicativo Python Flask implantado no AWS EC2 com escalonamento automático e utiliza um banco de dados MySQL.

Também temos trabalhos agendados em um sistema Linux separado, que é acionado a cada 10 segundos, atingindo os endpoints da API em https://api.example.com.
O aplicativo é executado em pm2.

Recentemente, encontramos problemas de duplicação de dados decorrentes desses trabalhos agendados. Embora o cron job esteja configurado corretamente para ser executado a cada 10 segundos, observamos casos em que o mesmo trabalho é executado simultaneamente com apenas microssegundos de intervalo. Ao ativar os logs da API, confirmamos essas ocorrências.

É desconcertante como esses trabalhos são executados simultaneamente quando estão programados para atingir os URLs da API a cada 10 segundos. Estamos buscando aconselhamento sobre métodos ou ferramentas que possam nos ajudar a diagnosticar esse problema, bem como estratégias para evitar tais execuções simultâneas de trabalhos.

Responder1

Executar trabalhos repetitivos sem verificar uma única cópia do trabalho, especialmente em intervalos tão curtos, é uma causa direta de problemas.

O que você pode fazer é medir o tempo de execução da chamada da API e definir o agendamento para o maior intervalo.Eimplemente a verificação para que apenas uma cópia do trabalho esteja em execução. Você pode configurar o trabalho para ser ignorado se já estiver em execução e enviar um tipo de alarme para que você possa (novamente) reconsiderar o intervalo agendado.

Claro que você pode organizar uma espécie de fila de trabalhos ignorados, mas isso depende muito da natureza do trabalho. E você corre o risco de ter uma fila cada vez maior.

informação relacionada