用 Python 搭 Web 服务器,搭建最直接的搭建方式是敲三行代码。打开终端,搭建输入
python -m http.server 8000,搭建回车。搭建浏览器访问localhost:8000,搭建当前目录的搭建文件列表就出来了。这是搭建 Python 标准库自带的 http.server 模块,不需要 pip 装任何东西。搭建我拿它临时共享文件用了好几年,搭建比开 FTP 快得多。搭建但这个模块只适合开发调试。搭建它单线程处理请求,搭建一个人下载大文件,搭建其他人就得排队等着。搭建官方文档里写得很直白:不建议用于生产环境。有次我在办公室用它给同事传一个 2GB 的镜像,第一个人开始下载后,第二个人点链接直接卡死。后来换成 Flask 才解决。
Flask:轻量但够用
Flask 装起来也快,
pip install flask完事。写一个返回 JSON 的接口大概长这样:from flask import Flask, jsonify app = Flask(__name__) @app.route('/api/user') def user(): return jsonify({ 'name': '张三', 'age': 28}) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)注意
host='0.0.0.0',默认只监听本机,局域网里其他设备访问不了。我第一次搭内部工具时忘了改这个,同事折腾半天连不上,最后发现是绑定地址的问题。Flask 自带开发服务器同样不适合生产,但用来做原型、内部小工具、API 测试,绰绰有余。需要更高并发怎么办
Flask 开发服务器是单进程的。并发稍微高一点就撑不住。这时候可以上 Gunicorn。
pip install gunicorn,然后gunicorn -w 4 app:app,启动 4 个 worker 进程。每个 worker 独立处理请求,性能提升明显。我压测过一个简单接口,Flask 原生大概每秒 200 请求,换成 Gunicorn 4 worker 后能到 800 左右。机器是 2 核 4G 的云服务器,配置不算高。再往上走,Nginx 反向代理 Gunicorn 是经典组合。Nginx 处理静态文件和 SSL 终止,动态请求转发给 Gunicorn。这个架构撑个日活几万的应用问题不大。配置也不复杂,Nginx 里写个
proxy_pass http://127.0.0.1:8000;就行。异步方案:FastAPI + Uvicorn
如果接口需要处理大量 IO 等待,比如调外部 API、查数据库,FastAPI 比 Flask 更合适。它基于 asyncio,单线程能扛住更多并发连接。Uvicorn 作为 ASGI 服务器,启动命令类似 Gunicorn。我拿 FastAPI 做过一个聚合多个第三方接口的服务,同样的机器,Flask 版本并发 50 就开始超时,FastAPI 跑到 200 还稳得很。
不过 FastAPI 的学习曲线比 Flask 陡一点。async/await 写不惯的话容易踩坑,比如在 async 函数里调了同步的数据库驱动,反而阻塞事件循环。选型时得看团队习惯和实际场景。
几个容易忽略的细节
端口别选 80 以下,除非用 root 跑或者配了 setcap。日志一定要打,不然出问题两眼一抹黑。静态文件交给 Nginx 或者 CDN,别让 Python 进程去读磁盘。还有,
debug=True千万别带到线上,那个交互式调试页面能执行任意代码,是个大漏洞。搭服务器这件事,Python 给的选项足够多。从三行代码的临时服务,到 Nginx + Gunicorn + Flask 的生产架构,按需选择就行。没必要一上来就搞最复杂的方案,但也不能拿开发服务器硬撑线上流量。搞清楚每个组件的边界在哪,比记住配置命令更重要。
顶: 4踩: 83






评论专区