Хотя сервер по умолчанию удобен для прямого обмена файлами, вы можете настроить сервер, запустив отдельный файл. Игровое поле представляет собой прямоугольный стакан , в который сверху падают фигуры стилизованные буквы L , S , Z , J , O , I и T. Берем модуль socket из стандартной библиотеки, создаем серверный сокет, принимаем входящие подключения, вычитываем и обрабатываем запросы и отправляем ответы.
Развертывание сервера с Python: от А до Я.
В этом руководстве я покажу, как настроить сервер для запуска веб-приложения без каких-либо других инструментов, кроме Python.
В те времена, когда Docker не существовало, я настраивал серверы в облачной среде с помощью кода Python. По сути, это был сценарий / проект Python, который я запускал на своем (локальном) компьютере, и он выполнял команды на (удаленном) сервере.
Я давно не использовал этот проект шахт, но наткнулся на него на прошлой неделе и понял две вещи:
Фактически, причина, по которой я написал это, заключается в том, что даже раньше я настраивал все серверы вручную: вход через ssh, установка необходимых пакетов и т. Д.
Проделав это несколько раз, я решил автоматизировать процедуру . Вот почему я построил проект, который собираюсь вам показать.
Это означает, что код выделяет детали всего, что вы должны делать на сервере, в отличие от использования Docker, где большинство деталей скрыто.
Таким образом, этот пост может быть полезен по двум причинам:
Пишем свой веб-сервер на Python: сокеты
- Установите все библиотеки, которые нам нужны на уровне ОС (в этом случае есть также git и postgresql-server среди многих других).
- Установите нужную нам версию Python, скомпилировав ее из исходного кода.
- Установить virtualenvwrapper . Фактически, вы можете использовать любое управление программным обеспечением virtualenv или ничего, если машина предназначена только для одного приложения Python.
Шаг 1 – Базовая конфигурация машины
Во-первых, вы должны обновить все пакеты. Когда вы создаете новый экземпляр, он обычно запускает немного устаревшую версию операционной системы, поэтому вам необходимо обновить пакеты. Например, в Debian / Ubuntu это делается с помощью apt-get update .
После этого вам нужно будет установить все пакеты, относящиеся к вашему проекту. В коде этого руководства я установлю множество пакетов, в том числе postgresql-server позволяющих запускать веб-приложение, использующее PostgreSQL в качестве серверной части.
Затем, поскольку вы хотите запустить приложение Python, вам необходимо настроить Python на сервере.
Большинство операционных систем поставляются с предустановленным двоичным кодом Python по умолчанию. Однако, на мой взгляд, это не очень хорошее решение.
Причина в том, что вы, возможно, разработали свое приложение с Python3.7, но тогда на сервере установлен Python3.9. Все рухнет, и будет трудно понять, почему.
Вот почему в моем коде также есть конкретные инструкции по настройке правильной версии Python в 3 этапа.
Наконец, как и в случае с большинством приложений Python, вам нужно создать файл virtualenv только для этого приложения.
Если у вашего приложения есть выделенный сервер, то есть это единственное работающее на нем программное обеспечение, вы можете пропустить эту часть. В любом случае мой код содержит функцию также для установки virtualenvwrapper и настройки виртуального окружения, предназначенного для этого приложения.
Вот почему в моем коде также есть конкретные инструкции по настройке правильной версии Python в 3 этапа. Если у вашего приложения есть выделенный сервер, то есть это единственное работающее на нем программное обеспечение, вы можете пропустить эту часть. Поэтому, прежде чем смотреть на код, стоит подумать о том, какие шаги вам нужно будет выполнить вручную , если вы не читали это руководство.
Модуль socketserver
Модуль стандартной библиотеки socketserver предназначен для сокращения рутинных действий при написании серверов на Python. Фактически, он предоставляет те же возможности, что и сервера в разделе Модуль socket и прямые руки, но. Просто сравните количество кода.
Класс TCPServer
Базовый, но не абстрактный класс для создания TCP сервера. Аналогичен синхронному TCP серверу. Только один клиент в один момент времени. Предоставляет функциональность для запуска сервера, приема входящих соединений и минимальной обработки ошибок. Обработка же запросов вынесена в класс BaseRequestHandler. Для создания обработчика необходимо отнаследоваться от BaseRequestHandler и определить как минимум метод handle().
ThreadingMixIn + TCPServer
С синхронным TCPServer мы опять не можем обрабатывать входящие запросы конкурентно. Берем ThreadingMixIn и получаем многопоточный TCP сервер:
ForkingMixIn + TCPServer
Аналогично многопоточному серверу можно создать многопроцессный сервер, используя ForkingMixIn.
Поточная обработка
9001 способ создать веб-сервер на Python
Модуль asyncio
Когда сетевого и транспортного уровня не достаточно и хочется работать на 7 небе уровне модели ISO OSI, поможет модуль стандартной библиотеки http.server. Модуль определяет классы для реализации HTTP серверов. В их числе HTTPServer, являющийся наследником socketserver.TCPServer, и ThreadingHTTPServer на основе ThreadingMixIn.
Этот модуль не для боевого применения! Его использование может привести к вызову произвольного кода на сервере!
В то же время, это удобная и полезная штука, позволяющая с помощью Python и ничего более, запускать HTTP сервер на локальной машине, например, чтобы раздавать статику.
Пример кастомизации HTTP сервера: отдаем специальный Content-Type заголовок для *.wasm файлов:
Стаканные координаты фигуры – (2, 3) на примере слева и (1, 11) на примере справа. Суммирование дает следующие результаты: Код организован в виде функций, каждая из которых выполняет задачу на сервере, даже если она выполняется на локальном компьютере. Если isCompleted возвращает True , программе нужно последовательно переместить вниз все ряды, располагающиеся над удаляемым, после чего заполнить нулевой ряд empty-значениями о.
Запуск HttpServer, который обслуживает настраиваемый файл index.html
Хотя сервер по умолчанию удобен для прямого обмена файлами, вы можете настроить сервер, запустив отдельный файл.
Например, мы будем запускать собственный Http-сервер, который использует http.server и socketserver для связи TCP.
MyHttpRequestHandler вызывает метод do_GET() для обслуживания запроса. Чтобы обслужить пользовательский файл для запроса, мы можем переопределить функцию, просто определив другой метод do_GET(), который возвращает другое значение.
Если вы назовете это как server.py , вы можете запустить http-сервер, используя:
Поскольку мы определили нашу пользовательскую функцию do_GET(), мы можем обслуживать HTML-файл домашней страницы, используя наш сервер, которым в данном случае является index.html. Также, если сервер работает в вашей системе, вы можете напрямую получить доступ к серверу, используя localhost: вместо использования IP.
Шаг 3 – Запустите приложение!
Содержание статьи