Mam skrypt Pythona, który wykonuje żądania URL przy użyciu urllib2. Mam pulę 5 procesów, które działają asynchronicznie i wykonują funkcję. Ta funkcja umożliwia wywoływanie adresów URL, pobieranie danych, przetwarzanie ich w wymagany format, wykonywanie obliczeń i wstawianie danych. Ilość danych jest różna dla każdego żądania adresu URL.Monitor zatrzymał procesy pythonowe
Uruchamiam ten skrypt co 5 minut przy użyciu zadania cron. Czasami, gdy robię ps -ef | grep python
, widzę zablokowane procesy. Czy istnieje sposób, w którym mogę śledzić procesy w klasie wieloprocesowej, które mogą śledzić procesy, ich znaczenie stanu zakończone, zablokowane lub martwe itd.? Oto fragment kodu:
tak właśnie nazywamy asynchroniczny przetwarza
pool = Pool(processes=5)
pool.apply_async(getData,)
I po to część getData który wykonuje urllib2 wnioski:
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)
Czy istnieje sposób, aby śledzić zatrzymał procesy i ponownie je uruchomił?
"utknął?" czy możesz wyjaśnić, co to oznacza? –
Dlaczego musisz uruchamiać je z 'multiproccesing'? Co jest złego w korzystaniu z wielu zadań cron? –
@Andrew: przez utknięcie mam na myśli zawieszone procesy. – ash