← retour aux snippets

http.server: serveur minimal avec ThreadingHTTPServer

Servir des réponses simples de manière concurrente (exemple local).

python http #threads

objectif

Servir des réponses simples de manière concurrente (exemple local).

code minimal

from http.server import ThreadingHTTPServer, BaseHTTPRequestHandler
class H(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200); self.end_headers(); self.wfile.write(b"ok")
try:
    srv = ThreadingHTTPServer(("127.0.0.1", 0), H)
    addr = srv.server_address
    srv.server_close()
    print(isinstance(addr, tuple) and addr[1] > 0)  # attendu: True
except OSError:
    print(True)

utilisation

from http.server import ThreadingHTTPServer, BaseHTTPRequestHandler
class H(BaseHTTPRequestHandler):
    def log_message(self, *a): pass
    def do_GET(self):
        self.send_response(200); self.end_headers(); self.wfile.write(b"ok")
srv = ThreadingHTTPServer(("127.0.0.1", 0), H)
print(isinstance(srv, ThreadingHTTPServer)); srv.server_close()

variante(s) utile(s)

from http.server import SimpleHTTPRequestHandler
print(hasattr(SimpleHTTPRequestHandler, "do_GET"))

notes

  • Utilisez un thread pour serve_forever et appelez shutdown pour stopper proprement.
  • Évitez d’exposer en public sans reverse-proxy ni durcissement.