2012-05-14 2 views
1

Мне нужно постоянно контролировать процесс, и я использую идентификатор процесса для отслеживания процесса. Я написал программу для отправки электронной почты, как только процесс был остановлен, так что я вручную перепланирую его, но часто забываю перенести процесс (в основном, другую программу на питоне). Затем я наткнулся на модуль apscheduler и использовал планирование стиля cron (http://packages.python.org/APScheduler/cronschedule.html), чтобы запустить процесс после его остановки. Теперь я могу вызвать процесс, когда PID процесса был убит, но когда я создаю его с помощью apscheduler, я не могу получить идентификатор процесса (PID) нового запланированного процесса; Следовательно, я не могу контролировать процесс. Есть ли функция в apscheduler для получения идентификатора процесса запланированного процесса?планирование работы с использованием python apscheduler

ответ

3

Вместо того чтобы полагаться на APSchedule для возврата pid, почему бы вам не сообщить о своей программе pid. Для демонов довольно часто встречаются pidfiles, которые являются файлами в известном месте, которые содержат только 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, и в будущем это упростит, если вы захотите написать больше программ, которые взаимодействуют с программой локально.

Смежные вопросы