Python 项目部署, uwsgi 还是 gunicorn ? 或者其他选择

2020-10-17 11:38:21 +08:00
 xchaoinfo

想问下目前这两种方案有哪些坑儿? 目前遇到 uwsgi 需要依赖一些 c lib, gunicorn 性能和功能不如 gunicorn

8084 次点击
所在节点    Python
38 条回复
so1n
2020-10-17 22:53:41 +08:00
supervisor 管理 gunicorn 进程啊
ClericPy
2020-10-17 22:56:12 +08:00
系统问题上 docker
性能问题上 Cython/uvloop/Django-channels (都特么 python 了还要什么性能, 直接水平扩容算了)
依赖问题用 pipenv/poetry/shiv/venv
守护问题用 systemd/airflow/azkaban/supervisor

现在一直在 asgi, 所以上面的东西都是我胡编的 :)
cz5424
2020-10-17 22:58:17 +08:00
@sunhk25 waitress
hushao
2020-10-18 00:20:19 +08:00
python 性能问题最后再定位到部署上面,哪个熟悉用哪个,相同配置下的部署层面差别不明显
black11black
2020-10-18 03:42:59 +08:00
@iConnect 他这个应该是后端瓶颈,不是配置瓶颈
zachlhb
2020-10-18 09:14:57 +08:00
@inframe 我同样也是 tornado 套 django,部署很方便,而且可以连同起很多服务,一个脚本就搞定
wdhwg001
2020-10-18 09:26:47 +08:00
作为 ASGI 用户,每次看到 WSGI 们纠结 Windows 就觉得有 Uvicorn 真好,Waitress 到现在连个 SSL 都不支持,Uvicorn 功能已经做到快和 Gunicorn 齐平了。
est
2020-10-18 12:35:31 +08:00
@xchaoinfo 那是 pip install uwsgi 的坑啊。现在 pip install pyuwsgi 没坑。
linnchord
2020-10-18 16:17:07 +08:00
新手就用 gunicorn

通过 supervisor 管理 gunicorn,提供启停管理服务。
ytymf
2020-10-19 09:40:00 +08:00
@sunhk25 IIS+wfastcgi
di94sh
2020-10-19 11:12:18 +08:00
@est #1 pre-fork:uwsgi 是初始化之后才 fork 的, gunicorn 是 fork 之后初始化 感觉这个就挺坑的。。
est
2020-10-19 11:17:34 +08:00
@di94sh 有啥坑的。。lazy-app 了解一下。

https://uwsgi-docs.readthedocs.io/en/latest/articles/TheArtOfGracefulReloading.html#preforking-vs-lazy-apps-vs-lazy

https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html

很多人是被 uWSGi 的文档给夯退的。这个我承认。。。gunicorn 一页就能把所有参数给全的确很不错。但是 too simple 。。
timonwong
2020-10-19 11:47:02 +08:00
@est 还有个最大的坑就是 uwsgi 的 http 实现极其不完善(甚至还有 http 和 http-socket 的区别) ,最好用 uwsgi 协议。如果用 HTTP,前面挂 nginx,不要直接对外或者挂在 ELB 后面
est
2020-10-19 11:51:24 +08:00
@timonwong http 的实现挺完善了。http-socket 是用来作为 nginx 的 upstream 的没啥问题啊。甚至还有 http11-socket 。


你要说 uWSGI 的不完善,怎么也比 gunicorn 的完善啊。。。

uwsgi 协议我现在觉得不香了。因为是一个请求一个连接。。太费 tcp 了。。
SjwNo1
2020-10-20 09:44:05 +08:00
gunicorn 方式部署好像不兼容一些 pyhton 的 socket 工具
andych3n
2020-10-20 11:12:15 +08:00
nginx + gunicorn
macrosea
2020-11-09 23:32:37 +08:00
good comments, mark
macrosea
2020-11-11 23:18:29 +08:00
flask + nginx + uwsgi 无法利用多核,uwsgi 配置:
callable=app
processes=4
threads=4
lazy-apps=true
哪位大佬 帮忙看看?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/715872

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX