web-dev-qa-db-fra.com

Délai d'expiration de la demande uWSGI dans Python

En essayant de définir le délai d'expiration des demandes dans uWSGI, je ne suis pas sûr du paramètre correct. Il semble y avoir plusieurs options de délai d'expiration (socket, interface, etc.) et il n'est pas évident de savoir quel paramètre configurer ou où le définir.

Le comportement que je recherche est d'étendre le temps nécessaire à une demande à la couche de ressources d'une application REST peut prendre.

33
Juan Carlos Coto

Vous recherchez probablement le paramètre harakiri - si la demande prend plus de temps que le temps harakiri spécifié (en secondes), la demande sera abandonnée et l'ouvrier correspondant sera recyclé.

Pour uwsgi autonome (config ini):

[uwsgi]
http = 0.0.0.0:80
harakiri = 30
...

Si vous avez un proxy nginx avant uwsgi, vous devez également augmenter le délai d'expiration:

  location / {
    proxy_pass http://my_uwsgi_upstream;
    proxy_read_timeout 30s;
    proxy_send_timeout 30s;
  }

Si vous souhaitez (pour une raison étrange) un délai d'expiration supérieur à 60, vous pouvez envisager la communication via le protocole uwsgi. La configuration est un site nginx assez similaire:

location / {
    uwsgi_read_timeout 120s;
    uwsgi_send_timeout 120s;
    uwsgi_pass  my_upstream;
    include     uwsgi_params;
}

uwsgi:

[uwsgi]
socket = 0.0.0.0:80
protocol = uwsgi
harakiri = 120
...
52
Tombart

Réglage http-timeout a fonctionné pour moi. J'ai http = :8080, donc je suppose que si vous utilisez un socket de système de fichiers, vous devez utiliser socket-timeout.

16
iurii