дублировать процесс cron - python pm2

дублировать процесс cron - python pm2

Наша установка состоит из приложения Python Flask, развернутого на AWS EC2 с автоматическим масштабированием, и использует базу данных MySQL.

У нас также есть задания, запланированные на отдельной системе Linux, которая запускается каждые 10 секунд, достигая конечных точек API в https://api.example.com.
Приложение работает под управлением pm2.

Недавно мы столкнулись с проблемами дублирования данных, возникающими из-за этих запланированных заданий. Хотя задание cron настроено правильно на выполнение каждые 10 секунд, мы наблюдали случаи, когда одно и то же задание выполнялось одновременно с разницей всего в микросекунды. После включения журналов API мы подтвердили эти случаи.

Озадачивает, как эти задания выполняются одновременно, когда они должны обращаться к URL API каждые 10 секунд. Мы ищем советы по методам или инструментам, которые могли бы помочь нам диагностировать эту проблему, а также стратегии предотвращения таких одновременных выполнений заданий.

решение1

Выполнение повторяющегося задания без проверки единственной копии задания, особенно в течение столь короткого промежутка времени, является прямым признаком возникновения проблем.

Что вы можете сделать, так это измерить время выполнения вызова API и установить расписание на самый большой интервал.Иреализовать проверку, чтобы выполнялась только одна копия задания. Вы можете установить пропуск задания, если оно уже запущено, и отправить своего рода сигнал тревоги, чтобы вы могли (снова) пересмотреть запланированный интервал.

Конечно, вы можете организовать своего рода очередь пропущенных заданий, но это во многом зависит от характера задания. И вы рискуете иметь постоянно растущую очередь.

Связанный контент