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
fanjianhang
V2EX  ›  Python

开发基于 flask 的 api 服务应用,想在 windows10 环境下开发,生产使用 gunicorn 在 Linux 部署,怎么做

  •  
  •   fanjianhang · 2019-05-20 15:52:41 +08:00 · 5181 次点击
    这是一个创建于 2017 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位 v 友,入门 python 不久,目前习惯使用 windows 环境开发项目,团队同事大多数也是。现有个项目打算用 flask 实现并运行 api 服务提供给外部应用调用,查看资料发现,flask 自带的 wsgi 不推荐生产环境使用,官方推荐使用其他的 wsgi 服务器进行部署(如 gunicorn )。 现在想实现在 windows 下开发,可以使用 flask 默认 wsgi,生产环境可以用 gunicorn 运行。(要求:两种环境代码放在同个项目里),请问有什么方法可以实现?

    17 条回复    2019-05-22 11:21:12 +08:00
    xiexingjia
        1
    xiexingjia  
       2019-05-20 15:58:38 +08:00
    if __name__ == '__main__':
    app.run()
    frostming
        2
    frostming  
       2019-05-20 16:34:24 +08:00
    app.run 官方不推荐了,推荐 flask cli
    开发环境:
    ```
    # 环境变量
    FLASK_ENV=development
    FLASK_APP=myapp:app

    flask run
    ```
    Root1997
        3
    Root1997  
       2019-05-20 17:18:45 +08:00
    win10 1903 有个 WSL2 的 linux 环境 windows 开发完直接在 wsl2 进行部署调试
    fanjianhang
        4
    fanjianhang  
    OP
       2019-05-20 17:49:19 +08:00 via Android
    @frostming 你好,请问有相关推文吗,谢谢
    anthoy
        5
    anthoy  
       2019-05-20 17:50:58 +08:00
    docker for windows
    luozic
        6
    luozic  
       2019-05-20 17:59:20 +08:00 via iPhone
    用不用 docker 用上 docker 不用 上 wsl
    fanjianhang
        7
    fanjianhang  
    OP
       2019-05-20 20:13:10 +08:00
    @anthoy
    @luozic 暂时没用 docker
    Flasky
        8
    Flasky  
       2019-05-20 23:24:54 +08:00 via Android
    这个应该比较简单吧,开发环境靠 app.run()运行,而且 gunicorn 配置是很容易的了,写一个 shell 脚本,把你的 Application 复制过去,运行一下脚本就 ok 了
    Qzier
        9
    Qzier  
       2019-05-20 23:54:44 +08:00
    难道 Windows 上开发和 Linux 上部署冲突?我反正是没遇到。
    kosmgco
        10
    kosmgco  
       2019-05-21 00:09:42 +08:00 via iPhone
    https://realpython.com/kickstarting-flask-on-ubuntu-setup-and-deployment/

    看下这个,用 supervisor 守护 gunicorn 启动的 flask app
    Trim21
        11
    Trim21  
       2019-05-21 05:28:59 +08:00 via Android
    开发和部署用不同的命令启动服务器不就好了,在本地 python server.py 没必要在服务器上也一定是 python server.py 呀。
    hp66722667
        12
    hp66722667  
       2019-05-21 08:44:24 +08:00
    http://helloflask.com/ 这个应该可以帮助到你
    Marsss
        13
    Marsss  
       2019-05-21 08:47:52 +08:00
    supervisor+nginx+gunicorn+flask
    iweus
        14
    iweus  
       2019-05-21 08:59:24 +08:00
    建个脚本跑一下就可以了 gunicorn -w 4 -b 127.0.0.1:8000 run:appx
    JimmyTinsley
        15
    JimmyTinsley  
       2019-05-21 09:26:59 +08:00
    本机上开发环境直接 app.run(), 部署时用 gunicorn 跑呗. 可以大致参考下这个项目的做法 https://github.com/open-falcon/dashboard
    fngtz
        16
    fngtz  
       2019-05-21 15:52:48 +08:00 via iPhone
    pycharm 有很方便的远程调试功能。

    用 docker,去官方仓库能搜到别人写好的 image 来参考 /直接用,把代码挂载出来。

    不用 docker 的话,systemd 来管理 gunicorn 也很方便。

    总归是 pycharm 的方便,一键同步最方便。
    fanjianhang
        17
    fanjianhang  
    OP
       2019-05-22 11:21:12 +08:00
    谢谢各位 v 友的热心帮助,我目前参照 @liujie333333 的方法进行尝试,加上有现成代码可供参考,谢谢大伙
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2780 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 00:20 · PVG 08:20 · LAX 16:20 · JFK 19:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.