Как определить процесс в замороженном состоянии в Python?
Как идентифицировать процесс в замороженном состоянии в Python
Я запускаю файл python на сервере каждую полночь, иногда он переходит в состояние "заморожено". Это происходит через 5 или 6 дней?
Скрипт Python не занимает много памяти или загружается во время работы, его требуется 4 часа, если 120 документов для публикации.
Следующие шаги:
- Запустите скрипт Python custom.py
- Через 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
флаг для удаления блокировки семафора после завершения процесса.