task.py
이 메모리 오버 플로우로 인해 고장 났다고 가정합니다. 어떻게 모니터링하고 다시 시작할 수 있습니까?파이썬 프로세스를 모니터하고 비정상 종료시 재시작하는 방법
import time
while(1):
print('.')
# simulate breaks
time.sleep(2)
exit(0)
감사
task.py
이 메모리 오버 플로우로 인해 고장 났다고 가정합니다. 어떻게 모니터링하고 다시 시작할 수 있습니까?파이썬 프로세스를 모니터하고 비정상 종료시 재시작하는 방법
import time
while(1):
print('.')
# simulate breaks
time.sleep(2)
exit(0)
감사
당신은 감시를 사용할 수 있습니다. 작업자 프로세스가 더미 파일을 10 초마다 업데이트하도록합니다. 마지막 액세스가 20 초 전에 끝난 것이 아닌지 완전히 독립적 인 또 다른 프로세스 확인을하십시오. 그렇다면 작업자 프로세스를 다시 시작하십시오.
OS를 사용하는 방법에는 여러 가지가 있지만, 시계가 동기화되었다고 가정 할 때 네트워크를 통해 쉽게 작동 할 수 있습니다.
실제로 메모리가 부족한 경우 OOM killed이됩니다. 프로세스를 계속 다시 시작하는 프로세스가있는 경우 (예 : while true; do /path/to/my_script.py; done
) 즉시 다시 실행해야합니다. 이 같은
뭔가 작업을해야합니다 :
while ! /path/to/task.py; do
echo 'restarting task...'
done
task.py 하면 종료 루프가 계속 스크립트를 다시 실행 0이 아닌 종료 상태. 루프는 task.py이 0
으로 종료 될 때만 중단됩니다.
프로그램에서 오류가 발생하여 항상 0이 아닌 종료가 발생하면 결국 무한 루프가됩니다. 따라서 재시도 횟수를 max_try 값으로 제한하는 것이 더 좋습니다.
#!/bin/bash
max_try=100
count=1
while ! python /path/to/task.py; do
((count++)) # increment (Bashism)
#count=$(expr $count + 1) # increment (portable)
if [ $count -gt $max_try ]; then break; fi
echo 'restarting task...'
done
프로세스의 메모리가 부족한 이유는 무엇입니까? 당신은 그 문제를 해결해야합니다. 재시작을 위해 ['supervisord'] (http://supervisord.org/introduction.html)을보고 실패한 프로세스 재시작을 관리 할 수 있습니다. – mhawke