2012-05-14 2 views
1

프로세스를 지속적으로 모니터링해야하며 프로세스 ID를 사용하여 프로세스를 모니터링합니다. 나는 프로세스를 멈추었을 때 전자 메일을 보내 프로그램을 작성하여 수동으로 일정을 재조정하지만 종종 프로세스 (기본적으로 다른 파이썬 프로그램)를 다시 스케줄하는 것을 잊어 버립니다. 나는 apscheduler 모듈을 보았고 cron 스타일 스케줄링 (http://packages.python.org/APScheduler/cronschedule.html)을 사용하여 프로세스가 멈 추면 프로세스를 생성했습니다. 이제 프로세스의 PID가 삭제되면 프로세스를 생성 할 수 있지만 apscheduler를 사용하여 생성하면 새로 예약 된 프로세스의 프로세스 ID (PID)를 가져올 수 없습니다. 따라서 프로세스를 모니터링 할 수 없습니다. apscheduler에 예약 된 프로세스의 프로세스 ID를 가져 오는 기능이 있습니까?python apscheduler를 사용하여 작업 예약

답변

3

APSchedule을 사용하여 PID를 반환하는 대신 프로그램에서 PID 자체를보고하지 않는 것이 좋습니다. 데몬은 pid 파일을 가지고있는 것이 일반적입니다. pid 파일은 실행중인 프로세스의 pid를 포함하는 알려진 위치의 파일입니다. 당신은 당신이 먼저 파일이있는 PID에서 확인할 수 있습니다 프로세스를 모니터링 할 때마다 이제

import os 

try: 
    with open("/tmp/myproc.pid") as pidfile: 
     pidfile.write(str(os.getpid())) 
    main() 
finally: 
    os.remove("/tmp/myproc.pid") 

을, 그리고 그것을 않는 경우, 추가에 대한 프로세스의 PID를 검색 : 그냥 이런 식으로 주요 기능을 포장 모니터링. 이것은 cron의 특정 구현과 독립적 인 이점을 가지며, 프로그램과 로컬로 상호 작용하는 더 많은 프로그램을 작성하려는 경우 나중에 쉽게 작성할 수 있습니다.