我've deployed a Flask app with Gunicorn + Nginx + Supervisor. It doesn'吨有效 . 在线搜索发现了几个类似问题的报告,但没有一个解释符合我们的情况或解决问题的解决方案 . Here说要关掉daemonize gunicorn . 如果我'm right, it'不是我的情况 .
似乎有些东西启动了一个已经监听8000端口的服务 . Supervisor每秒都会向日志文件发送错误 .
什么可以帮助我?
Supervisor app-stderr.log中的错误:
[2015-02-19 18:56:19 +0300] [964] [INFO] Starting gunicorn 19.2.1
[2015-02-19 18:56:19 +0300] [964] [INFO] Listening at: http://127.0.0.1:8000 (964)
[2015-02-19 18:56:19 +0300] [964] [INFO] Using worker: sync
[2015-02-19 18:56:19 +0300] [1078] [INFO] Booting worker with pid: 1078
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
[2015-02-19 18:56:20 +0300] [1081] [INFO] Starting gunicorn 19.2.1
[2015-02-19 18:56:20 +0300] [1081] [ERROR] Connection in use: ('localhost', 8000)
[2015-02-19 18:56:20 +0300] [1081] [ERROR] Retrying in 1 second.
[2015-02-19 18:56:21 +0300] [1081] [ERROR] Connection in use: ('localhost', 8000)
[2015-02-19 18:56:21 +0300] [1081] [ERROR] Retrying in 1 second.
[2015-02-19 18:56:22 +0300] [1081] [ERROR] Connection in use: ('localhost', 8000)
[2015-02-19 18:56:22 +0300] [1081] [ERROR] Retrying in 1 second.
[2015-02-19 18:56:23 +0300] [1081] [ERROR] Connection in use: ('localhost', 8000)
[2015-02-19 18:56:23 +0300] [1081] [ERROR] Retrying in 1 second.
[2015-02-19 18:56:24 +0300] [1081] [ERROR] Connection in use: ('localhost', 8000)
[2015-02-19 18:56:24 +0300] [1081] [ERROR] Retrying in 1 second.
[2015-02-19 18:56:25 +0300] [1081] [ERROR] Can't connect to ('localhost', 8000)
[2015-02-19 18:56:25 +0300] [1078] [INFO] Worker exiting (pid: 1078)
[2015-02-19 18:56:25 +0300] [1122] [INFO] Booting worker with pid: 1122
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
[2015-02-19 18:56:27 +0300] [1148] [INFO] Starting gunicorn 19.2.1
[2015-02-19 18:56:27 +0300] [1148] [ERROR] Connection in use: ('localhost', 8000)
[2015-02-19 18:56:27 +0300] [1148] [ERROR] Retrying in 1 second.
[2015-02-19 18:56:28 +0300] [1148] [ERROR] Connection in use: ('localhost', 8000)
[2015-02-19 18:56:28 +0300] [1148] [ERROR] Retrying in 1 second.
[2015-02-19 18:56:29 +0300] [1148] [ERROR] Connection in use: ('localhost', 8000)
[2015-02-19 18:56:29 +0300] [1148] [ERROR] Retrying in 1 second.
[2015-02-19 18:56:30 +0300] [1148] [ERROR] Connection in use: ('localhost', 8000)
[2015-02-19 18:56:30 +0300] [1148] [ERROR] Retrying in 1 second.
[2015-02-19 18:56:31 +0300] [1148] [ERROR] Connection in use: ('localhost', 8000)
[2015-02-19 18:56:31 +0300] [1148] [ERROR] Retrying in 1 second.
[2015-02-19 18:56:32 +0300] [1148] [ERROR] Can't connect to ('localhost', 8000)
[2015-02-19 18:56:32 +0300] [1122] [INFO] Worker exiting (pid: 1122)
[2015-02-19 18:56:32 +0300] [1206] [INFO] Booting worker with pid: 1206
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
[2015-02-19 18:56:32 +0300] [1211] [INFO] Starting gunicorn 19.2.1
[2015-02-19 18:56:32 +0300] [1211] [ERROR] Connection in use: ('localhost', 8000)
我的supervisor.conf:
[program:app]
command = /home/www/app/flask/bin/gunicorn app:app -b localhost:8000 --preload
directory = /home/www/app
user = webhost
Netstat -tulpin
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 930/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 855/sshd
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 1392/python3
tcp6 0 0 :::22 :::* LISTEN 855/sshd
和ps aux | grep python
root 954 0.1 2.4 60564 12440 ? Ss 18:56 0:01 /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
webhost 1392 0.0 3.2 67148 16512 ? S 19:00 0:00 /home/www/app/flask/bin/python3 /home/www/app/flask/bin/gunicorn app:app -b localhost:8000
webhost 2124 5.2 4.2 86072 21344 ? S 19:12 0:00 /home/www/app/flask/bin/python3 /home/www/app/flask/bin/gunicorn app:app -b localhost:8000
webhost 2126 5.2 3.2 67148 16488 ? S 19:12 0:00 /home/www/app/flask/bin/python3 /home/www/app/flask/bin/gunicorn app:app -b localhost:8000
webhost 2130 0.0 0.1 11744 920 pts/0 S+ 19:13 0:00 grep --color=auto python
UPD . 主管配置在上面
nginx.conf
server {
location / {
proxy_pass http://127.0.0.1:8000;
}
location /static {
alias /home/www/myapp/app/static/;
}
}
文件结构
myapp
|
|-app-
| |
| __init__.py
|
run.py
|
config.py
init.py
from flask import Flask
app = Flask(__name__)
app.config.from_object('config')
from app import views
run.py
#!flask/bin/python
from app import app
app.run()
config.py
# For valid forms
CSRF_ENABLED = True
SECRET_KEY = 'never-guess'
2 回答
我有同样的问题,并通过调整Alwx的答案,我的解决方案是只运行应用程序,如果该模块被称为主(run.py):
然后我用gunicorn运行它:
我仍然可以像以前一样运行它
python run.py
我老了 . 感谢@Ibrahim我在
run.py
通过gunicorn开始了一个应用程序所以gunicorn也创造了流程,而且也是如此 . 他们互相冲突 . 刚删除那个字符串 .