Ответ
Создать веб-приложение на Python без фреймворков можно с помощью модулей из стандартной библиотеки. Это полезно для понимания основ работы веба, но не рекомендуется для production-систем из-за отсутствия многих удобств и средств защиты.
Существует несколько подходов разного уровня абстракции:
1. **`http.server` (Высокоуровневый)**: Простой способ запустить HTTP-сервер. Подходит для простых обработчиков и прототипов.
```python
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"
Привет, мир!
")
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()
```
2. **`wsgiref` (Стандартный интерфейс)**: Реализация стандарта WSGI (Web Server Gateway Interface), который разделяет сервер и приложение. Это основа большинства Python-фреймворков.
```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()
```
3. **`socket` (Низкоуровневый)**: Прямая работа с сокетами. Дает полный контроль, но требует ручной реализации всего HTTP-протокола.
```python
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) предоставляют необходимую структуру, безопасность и инструменты для быстрой разработки.