Как определить процесс в замороженном состоянии в Python?

Как идентифицировать процесс в замороженном состоянии в Python

Я запускаю файл python на сервере каждую полночь, иногда он переходит в состояние "заморожено". Это происходит через 5 или 6 дней?

Скрипт Python не занимает много памяти или загружается во время работы, его требуется 4 часа, если 120 документов для публикации.

Следующие шаги:

  1. Запустите скрипт Python custom.py
  2. Через 1 час снова запустите тот же скрипт на Python, когда нет запущенного сценария.

Если сценарий является предыдущим, сценарий все еще находится в системе, то тот же сценарий не будет завершен.

Но если процесс, выполняющий скрипт, переходит в состояние Froze или Zombie, то в следующий раз скрипт не будет запущен, потому что скрипт pervasion все еще находится в системе.

1 ответ

Если вы хотите, чтобы скрипт был прерван по тайм-ауту, и вы работаете в UNIX, вы можете использовать SIGALRM: Timeout при вызове функции

Если вы хотите предотвратить запуск нескольких копий одного и того же скрипта, есть несколько решений. Самый простой ps aux | grep, Если этого недостаточно, вы можете использовать пакет блокировки файлов https://pypi.python.org/pypi/filelock/ Но, по моему опыту, он все еще не стабилен. Лучшее решение - использовать семафоры sys-v ipc http://semanchuk.com/philip/sysv_ipc/. Вы можете установить undo флаг для удаления блокировки семафора после завершения процесса.

Другие вопросы по тегам