Python наблюдает за длительным процессом, предупреждает после стольких минут? - PullRequest
2 голосов
/ 03 апреля 2012

Я работаю с Python и Jython для развертывания приложений в WebSphere.Однако мы сталкиваемся с проблемой библиотек WAS, из-за которой вызовы этих действий иногда занимают до 30 минут.Чтобы устранить эту проблему, мне нужно иметь возможность следить за тем, если процесс все еще выполняется после стольких минут, и, если да, отправлять оповещение.

Я предполагаю, что мне нужно будет поставитьЗвоните в отдельную ветку и смотрите его, но у меня нет опыта работы с многопоточностью.Каков наилучший способ сделать это и есть ли ошибки?

1 Ответ

3 голосов
/ 03 апреля 2012

Python имеет встроенный класс Timer, который будет обрабатывать потоки для вас:

import threading

def after_2_minutes():
   if process_still_running():
       print "ALERT!!"

# start a timer in the background that waits 2 minutes
threading.Timer(2 * 60, after_2_minutes).start()

# start the process
foo.bar()

Gotchas: after_30_minutes будет работать в отдельном потоке, поэтому, как и в любом потоке, вы должны убедиться, что его действия не мешают другим вашим потокам (хотя вы можете без проблем манипулировать простыми структурами данных из-за Глобальная блокировка интерпретатора в CPython).

...