У меня есть скрипт Python, который выполняет URL-запросы с использованием urllib2.У меня есть пул из 5 процессов, которые работают асинхронно и выполняют функцию.Эта функция выполняет URL-вызовы, получает данные, анализирует их в требуемом формате, выполняет вычисления и вставляет данные.Количество данных варьируется для каждого URL-запроса.
Я запускаю этот скрипт каждые 5 минут, используя задание cron.Иногда, когда я делаю ps -ef | grep python
, я вижу застрявшие процессы.Есть ли способ, с помощью которого я могу отслеживать значения процессов в классе многопроцессорных систем, которые могут отслеживать процессы, их состояние, означающее, что они завершены, застряли или не работают и так далее?Вот фрагмент кода:
Вот как я называю асинхронные процессы
pool = Pool(processes=5)
pool.apply_async(getData, )
И вот часть getData, которая выполняет запросы urllib2:
try:
Url = "http://gotodatasite.com"
data = urllib2.urlopen(Url).read().split('\n')
except URLError, e:
print "Error:",e.code
print e.reason
sys.exit(0)
Есть ли способ отследить застрявшие процессы и запустить их снова?