2017-05-22 2 views
0

Je suis en cours d'exécution d'une requête qui prend 3 minutes maximum pour terminer avec django, en utilisant connections['report'].cursor()Nginx/délai d'attente gunicorn lorsque la requête en cours d'exécution qui prend 2 + minutes pour terminer le django

Quand je fais une demande à la conclusion que exécute cette requête, Nginx me donne un timeout (qui est présenté dans la vue comme "502 Bad Gateway").

Quelle approche devrais-je choisir pour résoudre ce problème? Dois-je augmenter le paramètre de délai d'attente ou comment puis-je rendre ce délai asynchrone?

Répondre

3

Première approche (la plus simple): Vous pouvez augmenter le paramètre de délai d'expiration. De cette façon, vos utilisateurs devront attendre longtemps. Pas une bonne expérience utilisateur.

Deuxième approche (difficulté modérée): Si vos utilisateurs n'ont pas à attendre cette requête (comme l'envoi d'un e-mail), vous pouvez déléguer cette tâche à un travailleur d'arrière-plan. Dans la communauté Django, qui est habituellement fait par celery

Troisième approche (le plus difficile - meilleure expérience): Utilisez django-channels et web sockets. Cela prendra beaucoup de temps si vous êtes nouveau à ces technologies.

Choisissez en fonction de votre cas. J'espère que cela aide!