Ciao a tutti, sono alle prese con un problema di gestione delle eccezioni in un progetto Python 3.10 basato su asyncio. Sto sviluppando un'applicazione che scarica file in parallelo usando async/await, ma non riesco a catturare correttamente gli errori di rete (es. timeout, connessioni rifiutate) in alcuni casi specifici. Ecco uno snippet del codice:
```python
async def download_file(url):
try:
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.read()
except aiohttp.ClientError as e:
print(f"Errore rete: {e}")
return None
```
Il problema è che quando la rete è assente del tutto (es. disconnessione), l'eccezione non viene catturata e l'applicazione crasha. Il traceback segnala: "aiohttp.client_exceptions.ClientConnectorError: [Errno 101] Cannot connect to host...". Ho provato ad aggiungere blocchi except generici o da socket, ma senza risultati.
Usando asyncio.gather() per aggregare i task, forse devo gestire diversamente le eccezioni a livello superiore? Sto usando VSCode su Windows 11, con aiohttp 3.9.2. Qualcuno ha esperienza con questi errori persistenti o sa come isolare meglio i task per evitare crash? Grazie!
```python
async def download_file(url):
try:
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.read()
except aiohttp.ClientError as e:
print(f"Errore rete: {e}")
return None
```
Il problema è che quando la rete è assente del tutto (es. disconnessione), l'eccezione non viene catturata e l'applicazione crasha. Il traceback segnala: "aiohttp.client_exceptions.ClientConnectorError: [Errno 101] Cannot connect to host...". Ho provato ad aggiungere blocchi except generici o da socket, ma senza risultati.
Usando asyncio.gather() per aggregare i task, forse devo gestire diversamente le eccezioni a livello superiore? Sto usando VSCode su Windows 11, con aiohttp 3.9.2. Qualcuno ha esperienza con questi errori persistenti o sa come isolare meglio i task per evitare crash? Grazie!