Sindaci d'Italia Elia Perantoni VR429673 Lo script utilizza i codici ISTAT dei comuni italiani presenti nel file abitanti_2019_2020.csv (fornito a lezione) per effettuare una serie di richieste HTTP (al sito comuni-italiani.it) e compilare una lista di sindaci che viene scritta sul file output.csv. Vengono utilizzate le funzionalità asincrone di Python 3 (normalmente conosciute come coroutine). In sostanza funziona così: le funzioni possono essere marcate 'async'. Quando una funzione è 'async', questa può volontariamente sospendersi e permettere ad un'altra funzione 'async' di proseguire la propria esecuzione. Se, ad esempio, una funzione effettua una richiesta HTTP, mentre aspetta il risultato dal server potrebbe permettere a qualche altra funzione di fare del lavoro utile. In questo modo si riduce notevolmente il tempo richiesto per reperire tutti i sindaci. Le funzioni asincrone utilizzate sono: un reader, diversi fetcher e un writer. Il reader legge i codici ISTAT dal file abitanti_2019_2020.csv e li mette in una coda chiamata 'in'. I fetcher leggono i codici ISTAT da questa coda e fanno le richieste HTTP al sito comuni-italiani.it per reperire il nome del sindaco. Quando il server risponde, la tupla (codice_istat, sindaco) viene inserita in una coda chiamata 'out'. Il writer è in attesa di tuple su questa coda. Quando ne riceve una, la scrive sul file 'output.csv'. Il progresso dello script è monitorabile da terminale con una barra di progresso. Eventuali errori vengono segnalati sempre su terminale. All'avvio, lo script leggerà il file output.csv e ignorerà i comuni già presenti. Esempio di esecuzione: $ virtualenv venv $ source venv/bin/activate $ (venv) pip install -r requirements.txt $ (venv) python main.py