- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个使用 Nginx + Gunicorn 正常运行的 Flask 应用程序,没有问题。该应用程序仍在开发中,因此目前每小时大约只有一个请求。
问题是 Gunicorn 似乎总是在上次重启后大约 12-36 小时后突然崩溃。发生这种情况时,nginx 仍然可以提供静态文件,但任何需要 Gunicorn 的东西都会开始返回 500 错误,即使 Gunicorn 进程仍在服务器上运行也是如此。通过 sudo supervisorctl restart xxx
重启 Gunicorn,此问题在接下来的 12-36 小时内始终得到解决(无需重启 nginx)。到目前为止,该问题已发生约 10 次。是否有可能以某种方式改进日志记录或做其他事情?
Nginx 配置文件 (/etc/nginx/sites-available/xxx_gunicorn):
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
access_log /var/log/nginx/xxx-access.log;
server_name 127.0.0.1 www.xxx.yy;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://127.0.0.1:8000/;
}
location /static {
alias /opt/xxx/static/;
}
}
supervisor conf 启动 gunicorn (/etc/supervisor/conf.d/xxx.conf)
[program:xxx]
command = gunicorn xxx:app -b localhost:8000 --debug --log-level debug --log-file /var/log/gunicorn.log --error-logfile /var/log/gunicorn.error.log --workers 2 --worker-connections 1000 --max-requests 100 --timeout 30
directory = /opt/xxx
user = ubuntu
stdout_logfile = /var/log/gunicorn.log ; Where to write log messages
autostart=true
autorestart=true
redirect_stderr=true
xxx.py
...
app = Flask(__name__)
...
if __name__ == '__main__':
app.debug=True
app.run()
/var/log/gunicorn.error.log:当 500 错误开始时,没有记录任何内容。 500 错误之前也没有可疑行。
/var/log/gunicorn.log:没有可疑行。
/var/log/nginx/error.log:没有可疑行。
/var/log/nginx/xxx-access.log:此处显示 500 条错误:
80.221.255.134 - - [27/Jan/2015:07:01:50 +0000] "GET / HTTP/1.1" 500 291 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36"
最佳答案
据我所知,gunicorn 没有选项log-file,只有access-logfile 和error-logfile:
http://gunicorn-docs.readthedocs.org/en/latest/settings.html#logging
但是要在你的 flask 应用程序中记录错误,你必须在其中设置 python 记录器。例如,可以这样做:
from logging.handlers import WatchedFileHandler
@app.before_first_request
def setup_logging():
"""
Setup logging
"""
handler = WatchedFileHandler("/var/log/your_flask_app.log")
app.logger.addHandler(handler)
app.logger.setLevel(logging.INFO)
关于python - Nginx + Gunicorn + Flask --> 使用 X 小时后常有 500 个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28166161/
我尝试了几乎所有命令来杀死 gunicorn 服务器。但没有任何效果。我怎样才能杀死这些进程并释放 80 端口 12652 ? Ss 0:00 sudo gunicorn -b
我正在使用 Apache Airflow,发现 gunicorn-error.log 的大小在 5 个月内增长了超过 50 GB。大多数日志消息都是 INFO 级别的日志,例如: [2018-05-1
我正在使用 在 Digital Ocean 上运行 django gunicorn 和 nginx . Gunicorn 用于为静态文件提供 django 和 nginx。 通过网站上传文件后,我无法
我正在使用 Django 1.8,我想用 gunicorn 运行我的应用程序。 我可以从命令行绑定(bind)到我的 IP 运行它: gunicorn myapp.wsgi:application -
我们正在使用 https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker FastAPI 并且能够使用 gunicorn 日志文件自定义我们
我在 docker 上的 centos7 上运行 Airflow 1.8,但我的网络服务器无法访问浏览器。我通过pip2.7安装了airflow。 Flower ui 显示良好,initdb 运行连接
gunicorn.service cannot open WorkingDirectory and the gunicorn executable. I think it's about per
任何想法为什么我的 gunicorn 服务器无法启动? jeffy@originaldjangster:~$ sudo /home/jeffy/django_files/django_test_ven
我已经安装了gunicorn,但是没有找到gunicorn命令: # pip3.4 install gunicorn Requirement already satisfied (use --upgr
我在有监督的ginicorn部署我的django项目。 我在virtualenv中安装了gunicorn,添加到INSTALL_APPS中。 命令./manage.py run_gunicorn -b
我成功安装了gunicorn: remote: -----> Removing .DS_Store files remote: -----> Python app detected remote: -
Systemd 和 Gunicorn 需要某种 wsgi 文件作为 ExecStart 的最后一个参数:http://docs.gunicorn.org/en/latest/deploy.html?h
我正在尝试将基本应用程序部署到 Amazon EC2使用 Django , Gunicorn , 和 Nginx .我有应用 git clone进入我的AWS Ubuntu实例并正在运行 Django
在更新为使用小型模型中的 spacy_en_core_web_lg 后,我的 fastapi 服务器内存不足。 当运行 fastapi 时,会生成 4 个 gunicorn worker,并且根据内存
我有一个基于这个的 ansible 配置虚拟机 https://github.com/jcalazan/ansible-django-stack但出于某种原因,尝试启动 Gunicorn 会出现以下错
我关注 this如何在 Ubuntu 18.04 指南中使用 Postgres、Nginx 和 Gunicorn 设置 Django。 我创建了以下文件 .socket sudo nano /etc/
我正在尝试按照此 [链接][1] 在 Digital Ocean 上部署简单的 Django 应用程序用 gunicorn 实现它的抛出错误 gunicorn.service: Failed with
这里我想问你,用python运行gunicorn uvicorn,和默认从tiangolo有什么区别? 我尝试使用 JMeter 对这些进行压力测试具有线程属性: 从这些,我得到了结果:: 从上面我尝
因此,我有一个简单的 Flask API 应用程序,它运行在运行 tornado worker 的 gunicorn 上。 gunicorn 命令行是: gunicorn -w 64 --backlo
我已经使用 Gunicorn + Nginx + Supervisor 部署了一个 Django 1.6 应用程序。一切正常,但我的 Gunicorn error.log 一直在发送错误。该文件很大,
我是一名优秀的程序员,十分优秀!