Banner

Как создать веб-сервер Python?

  • 14 сентября, 11:07
  • 911
  • 0

Python остается одним из лучших языков программирования для изучения в 2021 году для работы с приложениями для внутренней веб-разработки, машинного обучения, научного моделирования, системных операций. Он считается одним из наиболее доступных языков программирования с динамически типизированным английским синтаксисом и множеством библиотек. 

Мы покажем вам, как создать собственный веб-сервер Python для локального тестирования. Весь процесс занимает всего несколько минут и несколько строк кода. 

Но сначала давайте рассмотрим, что такое веб-сервер.

Что такое веб-сервер?

В инфраструктуре Интернета сервер является частью модели клиент-сервер. Когда клиентский браузер посещает веб-страницу, он отправляет HTTP-запрос на сервер, содержащий файлы, необходимые для работы веб-сайта. Сервер слушает запрос клиента, обрабатывает его и отвечает необходимыми файлами для представления веб-страницы. Этот контент может быть HTML (текст и мультимедиа, которые вы видите на веб-сайте) и JSON (приложения).

Вы, конечно, стыкались с  кодами ошибок сервера во время просмотра Интернета - «файл не найден» или 404 - более популярный вариант. В этих случаях у сервера возникают проблемы с доступом к определенным файлам. При ошибке 404 конкретный файл отсутствует.

У веб-серверов есть больше нюансов, включая классификацию на статические и динамические веб-серверы. Например, статические веб-серверы возвращают файлы только в том виде, в котором они есть, без дополнительной обработки. Динамические веб-серверы представляют базы данных и серверы приложений, к которым вы можете перейти после того, как освоите статические серверы. 

Как создать простой веб-сервер на Python?

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

При локальном тестировании ваша система становится сервером для клиента, которым является ваш браузер, а файлы хранятся локально в вашей системе. Модуль, который вы будете использовать для создания веб-сервера, - это HTTP-сервер Python. Здесь есть одно предостережение: его можно использовать только как статический файловый сервер. Вам понадобится веб-фреймворк Python, такой как Django, для запуска динамических веб-серверов.

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

python  -m  http .server

 Введите это в  командную строку, и вы должны увидеть сообщение «сервер запущен» и «сервер остановлен», когда вы закроете сервер.

И вот он - ваш первый веб-сервер на Python! По общему признанию, это простая задача, которая делает не что иное, как открытие веб-сервера на порте по умолчанию вашей системы 8000. Порт также можно изменить, указав номер порта в конце строки, например:

python  -m  http .server 8080

Однако гораздо интереснее и познавательнее создать собственный веб-сервер. В конце концов, лучший способ изучить Python - это практический подход: кодировать, отлаживать, исправлять и повторять. 

Создание собственного веб-сервера с использованием Python

Пользовательский веб-сервер позволяет вам делать больше, чем встроенный веб-сервер. Код, представленный ниже, научит вас  некоторых важным функциям и процессам. Не пугайтесь длины кода - здесь задействовано лишь несколько ключевых концепций. Вам не нужно вводить все это вручную, чтобы проверить это самостоятельно, но обратите внимание на важность этих концепций.

from http.server import HTTPServer,  BaseHTTPRequestHandler # Встроенная библиотека Python

import time
hostName = "localhost"
serverPort = 8080 #You can choose any available port; by default, it is 8000
Class MyServer(BaseHTTPRequestHandler):  
 def do_GET(self): //the do_GET method is inherited from BaseHTTPRequestHandler 
   self.send_response(200)    
              self.send_header("Content-type", "text/html")
              self.end_headers()
             self.wfile.write(bytes("<html><head><title>https://testserver.com</title></head>", "utf-8"))
             self.wfile.write(bytes("<p>Request: %s</p>" % self.path, "utf-8"))
             self.wfile.write(bytes("<body>", "utf-8"))
               self.wfile.write(bytes("<p>This is an example web server.</p>", "utf-8"))
             self.wfile.write(bytes("</body></html>", "utf-8"))
if __name__ == "__main__":        
  webServer = HTTPServer((hostName, serverPort), MyServer)
             print("Server started http://%s:%s" % (hostName, serverPort))  #Server starts
try:
          webServer.serve_forever()
except KeyboardInterrupt:
pass
webServer.server_close()  #Executes when you hit a keyboard interrupt, closing the server
    print("Server stopped.")

Прежде чем мы перейдем к критическим частям, давайте быстро рассмотрим несколько моментов.  Класс MyServer записывает в выходной поток (wfile), который отправляется в качестве ответа клиенту с помощью «self.wfile.write ()». Здесь мы пишем элементарную HTML-страницу на лету.

Мы рассмотрим некоторые из наиболее важных моментов, происходящих здесь, а именно:

  1. Модуль http.server
  2. Классы HTTPServer и BaseHTTPRequestHandler, производные от библиотеки http.server
  3. Метод do_GET

HTTP-сервер - это стандартный модуль библиотеки Python, в котором есть классы, используемые для взаимодействия клиент-сервер. Это два класса - HTTPServer и BaseHTTPRequestHandler. Последний обращается к серверу через первый. HTTPServer хранит адрес сервера как переменные экземпляра, а BaseHTTPRequestHandler вызывает методы для обработки запросов.

Код начинается с основной функции. Затем вызывается класс MyServer, и BaseHTTPRequestHandler вызывает метод do_GET () для удовлетворения запросов. Когда вы прерываете программу, сервер закрывается.

Заключение

Чтобы ваш веб-сервер работал с Python, не нужно много времени. Это основная идея, которую вы должны усвоить. Создание сервера - это небольшой, но важный шаг вперед на пути к созданию полнофункциональных приложений. 

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


Теги: python
0 комментариев
Сортировка:
Добавить комментарий

IT Новости

Смотреть все