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

gunicorn 命令行运行 flask 成功,使用 supervisor 运行就失败求大神解答?

  •  
  •   sevenQu · 2018-03-14 18:18:35 +08:00 · 2861 次点击
    这是一个创建于 2445 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有两个启动文件
    manage.py ,使用 flask-script 插件,最后是 manage.run()
    使用命令行:gunicorn manage:app -b localhost:8000 成功启动

    run.py ,我不太明白这下面两句是什么意思

    from werkzeug.contrib.fixers import ProxyFix
    app.wsgi_app = ProxyFix(app.wsgi_app)
    app.run(host='127.0.0.1',port=8000)
    
    但是使用 gunicorn run:app -b localhost:8000 同样启动成功
    
    使用 supervisor 配置文件内容如下
    
    [program:niceblog]
    command=/home/seven/.pyenv/versions/daily/bin/gunicorn manage:app -b localhost:8000
    diretory=/home/seven/Desktop/niceblog
    user=root
    autostart=true
    autorestart=true
    tdout_logfile=/home/seven/Desktop/niceblog/logs/gunicorn_supervisor.log
    
    由于使用的是 pyenv 所以 gunicorn 路径是那样,路径应该没错
    
    command 不管是 manage:app,还是 run:app 都不行
    
    manage:app,logs 提示 No module named 'manage'
    
    run:app,logs 提示 fail find application run
    
    希望有人可以帮忙指点一下,谢谢
    
    5 条回复    2018-03-16 16:41:40 +08:00
    lnightk
        1
    lnightk  
       2018-03-14 23:51:21 +08:00 via Android
    command 中启动应该是 python manage.py 吧?
    julyclyde
        2
    julyclyde  
       2018-03-15 10:52:07 +08:00
    manage.py 里面肯定有 if __name__吧?要不然按说会和 gunicorn manage:app 方式冲突的
    sevenQu
        3
    sevenQu  
    OP
       2018-03-15 18:09:07 +08:00
    @julyclyde 我去掉了 if__name__也不行,我使用命令行是可以成功的,所以应该不是这个问题吧
    julyclyde
        4
    julyclyde  
       2018-03-16 11:48:23 +08:00
    @sevenQu 你得明白,独立运行的程序,和“被 gunicorn 命令调用的程序”不是一码事
    前者自己 run
    后者提供一个叫做 app 的变量,供 gunicorn 调用; run 是在 gunicorn 那边的
    jasonqiao36
        5
    jasonqiao36  
       2018-03-16 16:41:40 +08:00
    ProxyFix 能获取到真实的请求 IP,但是有安全问题。http://flask.pocoo.org/docs/0.12/deploying/wsgi-standalone/#deploying-proxy-setups
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   940 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:30 · PVG 06:30 · LAX 14:30 · JFK 17:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.