Как предотвратить запуск нескольких экземпляров команды в django? - PullRequest
0 голосов
/ 02 марта 2019

У нас есть пользовательская команда в приложении django, которая выполняет синхронизацию данных с внешней службой.

Команда запускается ежечасно.

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

Можно ли предотвратить запуск команды django, еслион уже запущен?

Один из способов решения этой проблемы - использовать файл в качестве мьютекса для команды.

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

Как лучше всего решить эту проблему?Есть ли способ сделать это с помощью pythonic / django-ish?

...