在 Python 中构建 Web 服务器有多种方式,具体取决于需求复杂度。以下是常见的解决方案分类和示例:
一、快速启动本地测试服务器
适用场景:临时文件共享、本地测试
bash
# Python 3 内置模块
python3 -m http.server 8000
# 访问 http://localhost:8000 即可看到当前目录文件
二、基于框架的 Web 应用服务器
1. Flask(轻量级)
python
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
2. Django(全功能框架)
bash
# 创建项目
django-admin startproject mysite
cd mysite
python manage.py runserver 0.0.0.0:8000
三、生产环境部署方案
1. Gunicorn + Flask/Django
bash
# 安装
pip install gunicorn flask
# 运行 Flask 应用
gunicorn -w 4 -b 0.0.0.0:8000 myapp:app
2. uWSGI + Nginx
ini
# uwsgi.ini 配置示例
[uwsgi]
module = myproject.wsgi
master = true
processes = 5
socket = myproject.sock
chmod-socket = 660
vacuum = true
四、异步服务器(ASGI)
FastAPI + Uvicorn
python
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
# 运行命令:uvicorn main:app --reload
五、底层实现原理(手动实现)
python
from http.server import BaseHTTPRequestHandler, HTTPServer
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b"<h1>Custom Server</h1>")
httpd = HTTPServer(('localhost', 8080), MyHandler)
httpd.serve_forever()
六、性能对比(参考)
服务器类型 | 适用场景 | 并发处理能力 |
内置 http.server | 开发测试 | 单线程 |
Gunicorn | 生产环境 | 多进程 |
uWSGI | 高负载场景 | 多线程/异步 |
Uvicorn | 异步应用 | 高并发 |
七、注意事项
- 生产环境安全:避免直接暴露开发服务器到公网
- 静态文件处理:推荐使用 Nginx 处理静态资源
- 环境隔离:使用虚拟环境(venv/pipenv)
- HTTPS 支持:使用 Let's Encrypt 获取免费证书
需要具体实现某个功能或有其他疑问,可以进一步说明需求!