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

2018-03-14 18:18:35 +08:00
 sevenQu

有两个启动文件
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

希望有人可以帮忙指点一下,谢谢
2731 次点击
所在节点    Python
5 条回复
lnightk
2018-03-14 23:51:21 +08:00
command 中启动应该是 python manage.py 吧?
julyclyde
2018-03-15 10:52:07 +08:00
manage.py 里面肯定有 if __name__吧?要不然按说会和 gunicorn manage:app 方式冲突的
sevenQu
2018-03-15 18:09:07 +08:00
@julyclyde 我去掉了 if__name__也不行,我使用命令行是可以成功的,所以应该不是这个问题吧
julyclyde
2018-03-16 11:48:23 +08:00
@sevenQu 你得明白,独立运行的程序,和“被 gunicorn 命令调用的程序”不是一码事
前者自己 run
后者提供一个叫做 app 的变量,供 gunicorn 调用; run 是在 gunicorn 那边的
jasonqiao36
2018-03-16 16:41:40 +08:00
ProxyFix 能获取到真实的请求 IP,但是有安全问题。http://flask.pocoo.org/docs/0.12/deploying/wsgi-standalone/#deploying-proxy-setups

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

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

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

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

© 2021 V2EX