Tengo un script python que realiza solicitudes URL utilizando el urllib2. Tengo un grupo de 5 procesos que se ejecutan de forma asincrónica y realizan una función. Esta función es la que realiza las llamadas url, obtiene datos, los analiza en el formato requerido, realiza cálculos e inserta datos. La cantidad de datos varía para cada solicitud de url.monitorear procesos python pegados
Ejecuto este script cada 5 minutos con un trabajo cron. A veces, cuando hago ps -ef | grep python
, veo procesos estancados. ¿Hay alguna manera en la que pueda hacer un seguimiento del significado de los procesos dentro de la clase de multiprocesamiento que puede hacer un seguimiento de los procesos, su significado de estado completado, atascado o muerto, etc.? Aquí es un fragmento de código:
Así es como me llamo procesa asíncrono
pool = Pool(processes=5)
pool.apply_async(getData,)
Y la siguiente es una parte de getData que realiza peticiones 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)
¿Hay una manera de seguir procesos atascados y volver a ejecutarlos de nuevo?
"stuck?" ¿Puedes explicar lo que esto significa? –
¿Por qué necesita ejecutarlos con 'multiproccesing'? ¿Qué hay de malo con el uso de múltiples trabajos cron? –
@Andrew: me refiero a procesos bloqueados. – ash