J'ai un script python qui effectue des demandes d'URL en utilisant le urllib2. J'ai un pool de 5 processus qui fonctionnent de manière asynchrone et exécutent une fonction. Cette fonction est celle qui fait les appels d'url, obtient des données, les analyse dans le format requis, effectue des calculs et insère des données. La quantité de données varie pour chaque demande d'URL.Moniteur python processus bloqués
Je lance ce script toutes les 5 minutes en utilisant un travail cron. Parfois, quand je fais ps -ef | grep python
, je vois des processus bloqués. Existe-t-il un moyen de suivre la signification des processus au sein de la classe multitraitement qui peut suivre les processus, leur signification d'état terminée, bloquée ou morte et ainsi de suite? Voici un extrait de code:
Voilà comment j'appelle les processus async
pool = Pool(processes=5)
pool.apply_async(getData,)
Et ce qui suit est une partie de getData qui effectue des demandes 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)
est-il un moyen de suivre processus bloqués et les réexécuter?
"coincé?" Pouvez-vous expliquer ce que cela signifie? –
Pourquoi devez-vous les exécuter avec 'multiproccesing'? Quel est le problème avec l'utilisation de plusieurs tâches cron? –
@Andrew: par coincé, je veux dire des processus accrochés. – ash