Учебники

Python — HTTP-сервер

Стандартная библиотека Python поставляется со встроенным веб-сервером, который можно использовать для простого взаимодействия между сервером и веб-клиентом. Номер порта может быть назначен программно, и доступ к веб-серверу осуществляется через этот порт. Хотя это не полнофункциональный веб-сервер, который может анализировать многие виды файлов, он может анализировать простые статические HTML-файлы и обслуживать их, отвечая на них необходимыми кодами ответов.

Приведенная ниже программа запускает простой веб-сервер и открывает его на порту 8001. Успешная работа сервера указывается кодом ответа 200, как показано в выходных данных программы.

import SimpleHTTPServer
import SocketServer

PORT = 8001

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT
httpd.serve_forever()

Когда мы запускаем вышеуказанную программу, мы получаем следующий вывод:

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

Служа местному хозяину

Если мы решим сделать сервер Python локальным хостом, обслуживающим только локальный хост, то мы можем использовать следующую программу для этого.

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()

Когда мы запускаем вышеуказанную программу, мы получаем следующий вывод: