现在 Python web 应用都用什么部署? flask, tornado, django 之类的。其实不是 web 应用也差不多。

2017-04-22 15:52:07 +08:00
 keysona
公司的项目目前是 supervisor 。

额,每当代码更新,我都是新开一个服务,再在 nginx 把流量切过去,没问题就把老的停了。当然, python 的 virtualenv 都是公用的。。。

尝试 docker 后,发现这个其实很适合 python 部署。开一个容器,切流量...

实际使用后,发现没有必要在 docker 里使用 virtualenv 之类的,因为每个容器都是独立的。

求大佬分享经验。
3103 次点击
所在节点    Python
10 条回复
fynx
2017-04-22 19:34:26 +08:00
venv + django/flask + supervisor + uwsgi + nginx. 未上 docker
ohhe
2017-04-22 20:00:21 +08:00
docker 里面肯定没必要 env 了。多此一举。
option 1 : django + env + supervisor +gunicorn +nginx
option 2 : django + supervisor +gunicorn +nginx 个人认为生产环境只跑一个服务的话用不用 env 无所谓
option 3 : docker(django + gunicorn) + nginx
keysona
2017-04-22 20:23:19 +08:00
@fynx @ohhe
受教了。

想换成 docker + nginx 了。
Tunar
2017-04-22 21:12:35 +08:00
docker tornado
cloverstd
2017-04-22 22:50:11 +08:00
使用 docker
对于 wsgi 之类的,在 docker 里面跑一个 uwsgi/gunicorn ,然后开多个 worker
对于 tornado, 在 docker 里可以用 multiprocess 起多个 tornado 进程,但是公用一个端口; 或者使用 supervisor 起多个 tornado 进程,运行在不同的端口

docker 里面把各种依赖全装了,基础镜像选择 alpine
ryd994
2017-04-23 01:22:53 +08:00
只要是能简单横向扩展,自身无状态的服务,都能用 docker 直接扩
keysona
2017-04-23 09:37:37 +08:00
@Tunar 公司项目也是 tornado 。

@cloverstd 感谢大佬的干货分享。

@ryd994 嗯,确实啊。
siteshen
2017-04-24 01:25:56 +08:00
@cloverstd 实测基础镜像选 alpine 并没那么好,不少的包安装都有问题,某些包(比如 airflow 依赖的 psutil )连使用 python:slim 都需要安装 gcc 。
cloverstd
2017-04-24 08:50:39 +08:00
@siteshen 依赖都是可以装的,只有部分,例如 cx_oracle 依赖的 glibc 不全,其余的都可以装上

选用 alpine skiing 的最大好处是可以减小镜像体积,方便 pull 和 push ,可以快速扩容
yanzixuan
2017-04-24 09:12:38 +08:00
@cloverstd cx_oracle 也是可以搞定的。构建的时候,复制 oracle 对应 lib 到 docker 目标文件夹,然后再装 cx_oracle. 一些设置在写 dockerfile 一并搞完。

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

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

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

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

© 2021 V2EX