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-страницу на лету.
Мы рассмотрим некоторые из наиболее важных моментов, происходящих здесь, а именно:
- Модуль http.server
- Классы HTTPServer и BaseHTTPRequestHandler, производные от библиотеки http.server
- Метод do_GET
HTTP-сервер - это стандартный модуль библиотеки Python, в котором есть классы, используемые для взаимодействия клиент-сервер. Это два класса - HTTPServer и BaseHTTPRequestHandler. Последний обращается к серверу через первый. HTTPServer хранит адрес сервера как переменные экземпляра, а BaseHTTPRequestHandler вызывает методы для обработки запросов.
Код начинается с основной функции. Затем вызывается класс MyServer, и BaseHTTPRequestHandler вызывает метод do_GET () для удовлетворения запросов. Когда вы прерываете программу, сервер закрывается.
Заключение
Чтобы ваш веб-сервер работал с Python, не нужно много времени. Это основная идея, которую вы должны усвоить. Создание сервера - это небольшой, но важный шаг вперед на пути к созданию полнофункциональных приложений.
Попробуйте код самостоятельно и, возможно, даже найдите проекты Python, включающие реализацию сервера. Есть много доступных проектов, в которых используется эта концепция, поэтому хорошо знать, как реализовать ее в более широком контексте.
0 комментариев
Добавить комментарий