Creare un Server HTTP con Python e poche righe di codice
In questo script si crea ed avvia un Server HTTP. CustomHandler
estende SimpleHTTPRequestHandler
per sovrascrivere il metodo log_message
e scrivere i log in un file. La porta può essere specificata come un argomento della riga di comando. Infine, viene utilizzato un blocco try/except per gestire l’errore che si verifica quando la porta è già in uso.
import http.server
import socketserver
import logging
import sys
# Prendi la porta dagli argomenti della riga di comando, se presente
PORT = int(sys.argv[1]) if len(sys.argv) > 1 else 8000
class CustomHandler(http.server.SimpleHTTPRequestHandler):
def log_message(self, format, *args):
# Scrive ogni log nel file server.log
with open('server.log', 'a') as file:
file.write("%s - - [%s] %s\n" % (self.address_string(), self.log_date_time_string(), format % args))
# Usa il CustomHandler invece del SimpleHTTPRequestHandler
Handler = CustomHandler
try:
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
except OSError as e:
print(f"Impossibile avviare il server: {e}")