Python - Serveur HTTP

La bibliothèque standard Python est livrée avec un serveur Web intégré qui peut être appelé pour une communication simple avec le client Web. Le numéro de port peut être attribué par programme et le serveur Web est accessible via ce port. Bien qu'il ne s'agisse pas d'un serveur Web complet capable d'analyser de nombreux types de fichiers, il peut analyser de simples fichiers HTML statiques et les servir en leur répondant avec les codes de réponse requis.

Le programme ci-dessous démarre un serveur Web simple et l'ouvre au port 8001. L'exécution réussie du serveur est indiquée par le code de réponse 200 comme indiqué dans la sortie du programme.

import SimpleHTTPServer
import SocketServer
PORT = 8001
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()

Lorsque nous exécutons le programme ci-dessus, nous obtenons la sortie suivante -

serving at port 8001
127.0.0.1 - - [14/Jun/2018 08:34:22] "GET / HTTP/1.1" 200 -

Servir un hôte local

Si nous décidons de faire du serveur python un hôte local servant uniquement l'hôte local, nous pouvons utiliser le programme suivant pour le faire.

import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
HandlerClass = SimpleHTTPRequestHandler
ServerClass  = BaseHTTPServer.HTTPServer
Protocol     = "HTTP/1.0"
if sys.argv[1:]:
    port = int(sys.argv[1])
else:
    port = 8000
server_address = ('127.0.0.1', port)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()

Lorsque nous exécutons le programme ci-dessus, nous obtenons la sortie suivante -

Serving HTTP on 127.0.0.1 port 8000 ...