2015-11-03 2 views
1

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

Я бег питон файл на сервере, на каждую середине ночи, когда-то его идти в Замороженный статус. Это происходит через 5 или 6 дней?

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

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

  1. Run Python скрипт custom.py
  2. После 1 часа снова запустить же питон скрипт, когда нет Нет же сценарий в беге.

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

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

+0

Вы можете использовать задание cron, оно перезапустит программу – AndreL

+0

да, я запустил вкладку cron, но скрипт переходит в замороженное состояние. –

+0

У вас есть отпечатки на вашем скрипте? – AndreL

ответ

2

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

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