V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
keysona
V2EX  ›  Python

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

  •  
  •   keysona · 2017-04-22 15:52:07 +08:00 · 3091 次点击
    这是一个创建于 2568 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司的项目目前是 supervisor 。

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

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

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

    求大佬分享经验。
    10 条回复    2017-04-24 09:12:38 +08:00
    fynx
        1
    fynx  
       2017-04-22 19:34:26 +08:00
    venv + django/flask + supervisor + uwsgi + nginx. 未上 docker
    ohhe
        2
    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
        3
    keysona  
    OP
       2017-04-22 20:23:19 +08:00
    @fynx @ohhe
    受教了。

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

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

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

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

    选用 alpine skiing 的最大好处是可以减小镜像体积,方便 pull 和 push ,可以快速扩容
    yanzixuan
        10
    yanzixuan  
       2017-04-24 09:12:38 +08:00
    @cloverstd cx_oracle 也是可以搞定的。构建的时候,复制 oracle 对应 lib 到 docker 目标文件夹,然后再装 cx_oracle. 一些设置在写 dockerfile 一并搞完。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   924 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:49 · PVG 02:49 · LAX 11:49 · JFK 14:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.