Cum să măresc timeout-ul pentru NGINX? (Programare, Python, Nginx, Flask, Wsgi)

Adam Strike a intrebat.
a intrebat.

Folosesc Python, Flask, uWSGI și NGINX pentru a găzdui un server web. Una dintre funcții implică generarea unui fișier pentru utilizator, care poate dura până la un minut sau două. La această acțiune continui să primesc un timeout 504 de la NGINX. Am încercat să schimb câteva variabile de configurare în /etc/nginx/nginx.conf cum ar fi keepalive_timeout dar nu a funcționat.Am încercat, de asemenea, să adaug următoarele la /etc/nginx/conf.d/timeout.conf:

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

și apoi am reîncărcat cu systemctl reload nginx dar nu s-a schimbat nimic.

Cum pot crește durata de timp înainte de expirarea cererii?Mulțumesc pentru orice ajutor.

3 răspunsuri
Vinay

Adăugați următoarele directive la sfârșitul secțiunii ‘http’ pentru a crește limita de timp de așteptare la 180 de secunde (3 minute):

http {
    <...>
    include /etc/nginx/conf.d/.conf;

    proxy_send_timeout 180s;
    proxy_read_timeout 180s;
    fastcgi_send_timeout 180s;
    fastcgi_read_timeout 180s;
}

Sursa : https://support.plesk.com/hc/en-us/articles/115000170354-An-operation-or-a-script-that-takes-more-than-60-seconds-to-complete-fails-on-a-website-hosted-in-Plesk-nginx-504-Gateway-Time-out

Emmanuel BRUNET

M-am confruntat cu aceeași problemă … Am găsit o soluție de rezolvare spunându-i lui nginx să accepte o anumită cantitate de date peste cea implicită. Nu am încercat să gestionez timeout-ul în sine, dar modificarea cantității de date acceptate în tranzacție a făcut truc.

 server {

        client_max_body_size            5M; # or more ^^

}

dar nu este cu adevărat o opțiune securizată … funcționează, dar aveți grijă făcând acest lucru.

în plus, dacă folosiți un gateway WSGI cu proxy invers (Php, de exemplu) … mecanismul underlayrer poate avea prioritate față de acesta

Comentarii

  • Ce vrei să spui că nu este o opțiune securizată? Mulțumesc pentru ajutor btw 🙂 –  > Por Adam Strike.
  • Și dacă aș pune asta în /etc/nginx/nginx.conf? –  > Por Adam Strike.
  • acceptarea unui fișier mare pentru a fi descărcat este același lucru cu acceptarea încărcării unui fișier mare folosind această opțiune ^^ … poate fi una binară .. cu capabilități autoexecutabile … NGINX nu va verifica asta –  > Por Emmanuel BRUNET.
  • da, în /etc/nginx/nginx.conf, în secțiunea sever, așa cum se menționează –  > Por Emmanuel BRUNET.
  • Nu este un fișier mare, durează doar câteva minute pentru a genera? –  > Por Adam Strike.
Emmanuel BRUNET
server {

        server_name                     yourhost;
        client_max_body_size            5M;

        location / {
                proxy_http_version      1.1;
                proxy_set_header        Host $host;
                proxy_set_header        Upgrade $http_upgrade;
                proxy_set_header        Connection "upgrade";
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

                proxy_pass              http://127.0.0.1:8080; # depending on your network conf

        }
}

Comentarii

  • Unde anume aș putea adăuga acest lucru? –  > Por Adam Strike.
  • nu ați adăugat timeout în răspunsul dumneavoastră –  > Por P Satish Patro.