Il python è un linguaggio versatile, semplice ma al contempo potente, e ancora una volta lo dimostriamo con questo breve how to. In moltissimi linguaggi di programmazione d’alto livello, realizzare un server http risulta molto più complicato di quanto si pensi. Con python pensate, tutto si riduce a un singolo comando o appena 7 righe di codice.

E’ possibile invocare l’interprete python direttamente da terminale, specificando come parametro il servizio da avviare (il server http in questo caso) e la porta su cui rimanere in ascolto:

python -m http.server 3333

Con questo piccolo ma potente strumento si può condividere in un batter d’occhio un’intera cartella o l’intero desktop in LAN per effettuare lo streaming on demand dei contenuti sul nostro pc verso altri dispositivi nel network locale o semplicemente passare file da un pc all’altro. E’ possibile aprire le porte del router (NAT) e rendere la macchina accessibile dall’intera rete internet (tenete presente che non vi sono misure di sicurezza adeguate garantite, e’ rischioso esporsi così sulla rete).

Il web server al contempo può essere utilizzato come interfaccia server per i nostri applicativi python, e funziona alla stregua di qualsiasi altro web server più diffuso. Un client che richiede una pagina html sarà in grado di visualizzarla correttamente, e se una index.html è presente in una cartella richiamata dal client, verrà visualizzata come pagina di default.

Per integrarlo nei nostri script il codice è il seguente:

import http.server
import socketserver
 
PORT = 3333
Handler = http.server.SimpleHTTPRequestHandler
httpd = socketserver.TCPServer(("", PORT), Handler)
print("In ascolto sulla porta", PORT)
httpd.serve_forever()

La directory principale nel caso dello script sarà quella dove viene eseguito.

PS. Codice Python versione 3.0 o superiore. Per versioni precedenti il pacchetto http server è posto in altre location all’interno delle librerie. E’ consigliato dunque guardare l’apposita documentazione online.