web-dev-qa-db-fra.com

Que puis-je faire pour corriger une erreur de délai d'attente de la passerelle 504?

J'utilise jquery pour essayer d'extraire des données d'une API. Cependant, je reçois une erreur 504. Même lorsque j'utilise postman pour tester les données, cela se produit. Quelqu'un peut-il suggérer ce que je dois faire pour résoudre ce problème?

6
Cathy Regan

Il n'y a rien vous pouvez faire. 

Vous envoyez une demande à un serveur. Cette demande particulière échoue, car le serveur envoie une demande à un proxy et obtient une erreur de dépassement de délai. Votre serveur vous le signale comme statut 504. 

Le seul moyen de résoudre ce problème consiste à réparer le proxy (le faire répondre rapidement) ou à changer le serveur pour qu'il ne s'appuie plus sur ce proxy. Les deux sont en dehors de votre région. 

Vous ne pouvez pas empêcher de telles erreurs. Ce que vous pouvez faire, c'est découvrir quelle expérience utilisateur il devrait y avoir lorsqu'un tel problème se produit et le mettre en œuvre. BTW. Si vous obtenez 504 erreurs, vous devez également vous attendre à des erreurs de délai d'attente. Supposons que vous adressiez une requête à votre serveur avec un délai d'attente de 60 secondes et que votre serveur adresse une requête au proxy avec un délai d'attente de 60 secondes. Étant donné que les deux délais d'attente sont identiques, votre serveur reçoit parfois le délai d'attente du proxy et vous l'envoie (statut 504), mais parfois votre demande au serveur expire juste avant et vous obtenez une erreur de délai d'attente. 

5
gnasher729

J'ai récemment rencontré ce problème sur l'une de mes applications qui faisait un appel ambitieux à sa base de données Firebase: elle récupérait un très gros enregistrement nécessitant plus de 60 secondes (délai d'attente par défaut) pour être récupéré.

Pour ceux qui rencontrent cette erreur et qui ont accès à l'environnement d'hébergement de leur application/site, qui utilise le proxy NGINX, ce problème peut être résolu en prolongeant le délai d'attente des demandes d'API.

Dans votre /etc/nginx/sites-available/default ou /etc/nginx/nginx.conf, ajoutez les variables suivantes:

proxy_connect_timeout       240;
proxy_send_timeout          240;
proxy_read_timeout          240;
send_timeout                240;

Exécutez Sudo nginx -t pour vérifier la syntaxe, puis Sudo service nginx restart.

Cela devrait effectivement quadrupler le délai avant l'expiration du délai d'attente de vos demandes d'API par NGINX (le délai par défaut est de 60 secondes et notre nouveau délai d'expiration, de 240 secondes).

Plus ici: Comment réparer 504 Gateway Timeout avec Nginx

J'espère que cela t'aides!

0
Allan of Sydney