Ответ
Создать веб-приложение на Python без фреймворков можно с помощью модулей из стандартной библиотеки. Это полезно для понимания основ работы веба, но не рекомендуется для production-систем из-за отсутствия многих удобств и средств защиты.
Существует несколько подходов разного уровня абстракции:
-
http.server
(Высокоуровневый): Простой способ запустить HTTP-сервер. Подходит для простых обработчиков и прототипов.from http.server import BaseHTTPRequestHandler, HTTPServer class SimpleHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header('Content-type', 'text/html; charset=utf-8') self.end_headers() self.wfile.write(b"<h1>Привет, мир!</h1>") def run(server_class=HTTPServer, handler_class=SimpleHandler, port=8000): server_address = ('', port) httpd = server_class(server_address, handler_class) print(f"Сервер запущен на порту {port}") httpd.serve_forever() run()
-
wsgiref
(Стандартный интерфейс): Реализация стандарта WSGI (Web Server Gateway Interface), который разделяет сервер и приложение. Это основа большинства Python-фреймворков.from wsgiref.simple_server import make_server # WSGI-приложение def application(environ, start_response): status = '200 OK' headers = [('Content-type', 'text/plain; charset=utf-8')] start_response(status, headers) return [b"Hello, WSGI World!"] with make_server('', 8000, application) as httpd: print("Сервер запущен на порту 8000...") httpd.serve_forever()
-
socket
(Низкоуровневый): Прямая работа с сокетами. Дает полный контроль, но требует ручной реализации всего HTTP-протокола.import socket server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('localhost', 8080)) server_socket.listen(1) print("Сервер слушает порт 8080...") while True: conn, addr = server_socket.accept() request = conn.recv(1024) # Упрощенный ответ, не парсим запрос response = b"HTTP/1.1 200 OKrnContent-Length: 13rnrnHello, Socket!" conn.sendall(response) conn.close()
Вывод: Использование стандартных библиотек — отличный способ изучить, как веб-серверы работают «под капотом», но для реальных проектов фреймворки (FastAPI, Django, Flask) предоставляют необходимую структуру, безопасность и инструменты для быстрой разработки.