Possiedo un programma Python che invia richieste di polling lunghe (circa 5-6) in parallelo utilizzando thread diversi per ciascun sondaggio tramite il pacchetto di richieste. E ho capito che alcune delle mie discussioni a volte si bloccano. Quando ciò accade, il server che sto inviando la richiesta non riceve la richiesta. Inoltre ho impostato un timeout sulla richiesta e non funziona.Le richieste Python talvolta si bloccano
try:
print("This line prints")
response = requests.head(poll_request_url, timeout=180)
print("This line does not print when freeze occurs")
except ReadTimeout:
print("Request exception.")
except RequestException as e:
print("Request exception.")
except Exception:
print("Unknown exception.")
print("This line does not print either when freeze occurs.")
sto facendo questo su Raspberry Pi 2 hardware con sistema operativo Raspbian.
Ho usato questo stesso programma senza problemi mentre stavo usando Python 2.7. Recentemente sono passato a Python 3.5. Ho provato ad utilizzare entrambe le versioni delle richieste con 2.8.1 e 2.9.1.
Questo problema non si verifica molto frequentemente, ma si verifica 2-3 volte al giorno su thread diversi.
Quale potrebbe essere il problema? Come posso eseguire il debug di questo?
Modifica: il problema viene risolto aggiornando il kernel di Linux.
Sto rilevando tutte le eccezioni incluso Timeout e quando si verifica il timeout, l'eccezione viene rilevata correttamente. È quando il timeout non si verifica e il blocco si verifica, quella linea non viene mai eseguita e non viene generata alcuna eccezione. –
Ho aggiunto un altro contesto al codice per riflettere la gestione delle eccezioni. –
Questo non può scadere durante il passaggio "connect", come dici di non ricevere mai una richiesta sul server. –