Ragazzi, ho un problema bestiale con asyncio in Python 3.11 e sto per dare di matto. Voglio fare scraping di una decina di pagine web in parallelo, ma il mio codice si blocca random dopo il primo await. Ecco un esempio:
```python
import asyncio
import aiohttp
async def fetch(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.text()
async def main():
urls = ["https://example.com/page1", "https://example.com/page2"]
tasks = [fetch(url) for url in urls]
results = await asyncio.gather(*tasks) # Qui si pianta spesso!
print(results)
asyncio.run(main())
```
Non capisco sta roba: a volte va, a volte no, e non vedo errori nel log. Ho provato con semafori, timeout e cavoli vari ma niente. Secondo voi è un problema di sessioni, di troppe connessioni aperte o ho sbagliato tutto io l'approccio? Aiutatemi prima che butti il PC dalla finestra, grazie mille!
```python
import asyncio
import aiohttp
async def fetch(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.text()
async def main():
urls = ["https://example.com/page1", "https://example.com/page2"]
tasks = [fetch(url) for url in urls]
results = await asyncio.gather(*tasks) # Qui si pianta spesso!
print(results)
asyncio.run(main())
```
Non capisco sta roba: a volte va, a volte no, e non vedo errori nel log. Ho provato con semafori, timeout e cavoli vari ma niente. Secondo voi è un problema di sessioni, di troppe connessioni aperte o ho sbagliato tutto io l'approccio? Aiutatemi prima che butti il PC dalla finestra, grazie mille!