这是我的 nginx 配置:
server {
listen 80;
listen [::]:80;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name www.nameOfSite.id nameOfSite.id;
access_log off;
error_log /var/www/log_nginx/error.log;
gzip on;
gzip_disable "msie6";
client_header_timeout 180s;
client_body_timeout 180s;
client_max_body_size 100m;
proxy_connect_timeout 120s;
proxy_send_timeout 180s;
proxy_read_timeout 180s;
send_timeout 600s;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
location /static {
alias /var/www/django/static;
}
location /media {
alias /var/www/django/media;
}
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
include uwsgi_params;
uwsgi_read_timeout 500;
uwsgi_send_timeout 500;
uwsgi_pass unix:/var/www/uwsgi_texas.sock;
}
}
这是我在 /var/www/texas_uwsgi.ini 中的 uWSGI ini 文件:
[uwsgi]
socket = /var/www/uwsgi_texas.sock
chdir = /var/www/django/
wsgi-file = /var/www/django/django/wsgi.py
processes = 8
threads = 1
master = true
harakiri = 900
chmod-socket = 777
vacuum = true
这是我在 /etc/systemd/system/texas.service 中的服务文件:
[Unit]
Description=TEXAS
After=syslog.target
[Service]
ExecStart=/usr/local/bin/uwsgi --ini /var/www/texas_uwsgi.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=main
[Install]
WantedBy=multi-user.target
问题是,当我进入一个具有大量内联对象和字段的 Model 对象的 Django 管理时,它不断返回 504 超时,因为处理时间超过 60 秒。我检查了我的 NGINX、uWSGI 配置,我找不到如何增加这个“60 秒超时”的解决方案。其余页面工作正常。
在我的 nginx 配置中,我已经尝试过:
proxy_connect_timeout 120s;
proxy_send_timeout 180s;
proxy_read_timeout 180s;
send_timeout 600s;
uwsgi_read_timeout 500;
uwsgi_send_timeout 500;
这是我尝试打开模型管理页面时的结果:
你的模型中可能有一个ForeignKey字段,对应的表可能有很多记录! Django 将尝试加载所有这些来填充下拉菜单。在许多应用程序中,用户字段经常会导致此类问题。您可以通过设置使其只读:
readonly_fields = ["user"]
您还可以将所有字段添加到 readonly_fields 中,然后将它们一一删除以找出有问题的字段。