Простой HTTP-сервер.

Запуск простого HTTP сервера из Python

В python есть встроенный модуль для быстрого запуска простого HTTP сервера. Для запуска достаточно выполнить одну команду.

№ python -m SimpleHTTPServer

По умолчанию это запустит HTTP сервер на порту 8000. Данный HTTP сервер опубликует содержимого текущего каталога.

Чаще всего я использую этот способ, чтобы быстро опубликовать файлы из произвольного каталога хоста Linux по HTTP, и скачать файлы на другое устройство. Например, мне нужно скачать определенный лог файл из каталога /var/log.

Для этого нужно перейти в указанный каталог:

И запустить HTTP сервер python:

$ python3 -m http.server 8080

запустить веб сервер на python

Если этот порт закрыт файерволом, нужно предварительно временно открыть его:

$ sudo firewall-cmd —add-port=8080/tcp

Теперь на другом устройства откройте браузер, перейдите по адресу http://192.168.79.128:8080 и скачайте нужные файлы.

расшарить файлы в каталоге через HTTP с помощью python

HTTP сервер пишет в консоль лог всех обращений к файлам (HTTP GET).

Затем вернитесь в консоль Linux и завершите процесс веб сервера Python, нажав Ctrl+C .

логи http сервера на python

Этот трюк можно использовать в том числе для передачи файлов из WSL в Windows.

Источник

HttpServer в качестве простого HTTP-сервера в Python

Этот модуль служит очень быстрым и простым способом запустить локальный Http-сервер в вашей сети.

Ранее в Python 2.7 этот модуль назывался HttpServer . Но в Python3 этот модуль был объединен с модулем http.server . Давайте начнем и запустим наш собственный Http-сервер.

Http Server

Импорт модуля httpserver

Этот модуль входит в состав стандартной библиотеки, поэтому устанавливать его не нужно. Чтобы импортировать этот модуль, просто используйте следующую инструкцию:

Теперь все готово к запуску сервера. Теперь давайте напишем немного кода для обслуживания файлов.

Запуск HTTP-сервера

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

Перейдите в любой каталог, которым вы хотите поделиться, и запустите сервер оттуда, используя:

Здесь мы запускаем наш локальный Http-сервер на порту 9000.

Подключение

Теперь, чтобы подключиться к локальному серверу, необходимо проделать следующие шаги:

  1. Зайдите на сервер и узнайте IP-адрес сервера с помощью arp -a в Windows или ip -a | grep inet в Linux.
  2. На удаленном клиенте просто введите http://IP_ADDRESS:9000/ в своем браузере.

Базовый Http-Сервер

Обратите внимание, что вы можете просмотреть файлы сервера или даже загрузить их на клиентскую машину.

список файлов

Запуск HttpServer, который обслуживает настраиваемый файл index.html

Хотя сервер по умолчанию удобен для прямого обмена файлами, вы можете настроить сервер, запустив отдельный файл.

Например, мы будем запускать собственный Http-сервер, который использует http.server и socketserver для связи TCP.

MyHttpRequestHandler вызывает метод do_GET() для обслуживания запроса. Чтобы обслужить пользовательский файл для запроса, мы можем переопределить функцию, просто определив другой метод do_GET(), который возвращает другое значение.

# server.py import http.server # Our http server handler for http requests import socketserver # Establish the TCP Socket connections PORT = 9000 class MyHttpRequestHandler(http.server.SimpleHTTPRequestHandler): def do_GET(self): self.path = 'index.html' return http.server.SimpleHTTPRequestHandler.do_GET(self) Handler = MyHttpRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("Http Server Serving at port", PORT) httpd.serve_forever()

Если вы назовете это как server.py , вы можете запустить http-сервер, используя:

домашняя страница

Поскольку мы определили нашу пользовательскую функцию do_GET(), мы можем обслуживать HTML-файл домашней страницы, используя наш сервер, которым в данном случае является index.html. Также, если сервер работает в вашей системе, вы можете напрямую получить доступ к серверу, используя localhost: вместо использования IP.

Источник

Простой http сервер.¶

Любой online-сервис начинается с того, что необходимо приложение, которое способно принимать и обрабатывать http-запросы.

В python есть встроенный модуль, который полвзоляет создавать простой http-сервер.

from http.server import BaseHTTPRequestHandler from http.server import HTTPServer def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler): server_address = ('', 8000) httpd = server_class(server_address, handler_class) try: httpd.serve_forever() except KeyboardInterrupt: httpd.server_close() 

Если запустить функцию run() , то будет запущен http-сервер, и если в браузере Вы введете 127.0.0.1:8000 , то Вам вернутся ответ, но ответ будет содержать ошибку, потому что сервер не знает как обрабатывать запросы.

Для того что бы исправить эту ошибку трубется в обработчике( BaseHTTPRequestHandler ) реализовать метод по обработке GET-запросов:

class HttpGetHandler(BaseHTTPRequestHandler): """Обработчик с реализованным методом do_GET.""" def do_GET(self): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write(''.encode()) self.wfile.write(''.encode()) self.wfile.write('Был получен GET-запрос.'.encode()) 

Теперь, если запустить сервер с новым обработчиком run(handler_class=HttpGetHandler) , то при переходе по адресу 127.0.0.1:8000 можно будет увидеть ответ на запрос.

Обратите внимание, что при формировании ответа обработчика был использован метод encode() у строк. Сделано этого потому что в теле ответа могут быть использованы только байтовые строки.

Задания¶

  1. Ознакомьтесь с описанием протокола HTTP.
  2. Дополните обработчик запросов таким образом, что бы он мог обрабатывать запросы по методам POST, PUT и HEAD. Для проверки реализации используйте библиотку requests.

© Copyright Revision d00c0df4 .

Versions latest Downloads html On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.

Источник

Читайте также:  Css for background transparent
Оцените статью