Nginx-ajax-django: 504 ошибка таймаута на странице, error-log: upstream timed out (110: Connection timed out) , TTFB>1
У меня есть приложение django, работающее на сервере nginx, которое использует ajax для асинхронного рендеринга html-страницы. Я получил ошибку 504 gateway timeout. Я перепробовал почти все решения, упомянутые в stack overflow, но ничего не помогло. В моем приложении я загружаю лист excel, из которого данные анализируются, обрабатываются, заносятся в базу данных, а затем статус обработки отображается на html-странице. Я понял, что первые две-три строки данных обрабатываются нормально и результат также отображается правильно. Для остальных строк процесс бэкенда происходит правильно, но ajax не получает сообщение о статусе от django view. Он показывает сообщение об ошибке 504. Журналы ошибок показывают ошибку Upstream timed out. Я даже включил timeout:333333
в мой код ajax. Если я делаю async:false
в ajax, процесс замедляется и я получаю сообщение об ошибке "страница не реагирует". Внимательно наблюдая, я понял, что для процессов, которые не завершены, TTFB становится больше, чем 1. Так может кто-нибудь объяснить, что делать?
nginx.conf
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush off;
tcp_nodelay on;
keepalive_timeout 605;
types_hash_max_size 2048;
# server_tokens off;
# proxy_set_header Host $host;
proxy_http_version 1.1;
#proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "upgrade";
proxy_set_header Connection "";
proxy_connect_timeout 605;
proxy_send_timeout 605;
proxy_read_timeout 605;
send_timeout 605;
fastcgi_read_timeout 605;
client_header_timeout 605;
client_body_timeout 605;
proxy_buffering off;
proxy_request_buffering off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include fastcgi_params;
include /etc/nginx/mime.types;
default_type application/octet-stream;
}