2010-02-10 8 views
0

J'ai une application qui utilise Django avec FCGI sur nginx. J'utilise les applications tierces comme django-registration et django-messages de James Bennett du projet Pinax. Ces deux applications ont des formulaires qui sont soumis et enregistrer des données dans la base de données, puis rediriger vers une nouvelle URL.En utilisant nginx/fcgi/django, j'ai des messages de formulaire qui donnent un timeout de la passerelle 504

Mon problème semble être que la méthode .save() sur l'un des formulaires dans ces applications provoquent un délai d'expiration de la passerelle 504 lorsque les formulaires sont soumis. Toutes les données sont enregistrées dans la base de données comme il se doit, mais aucune ne semble jamais retourner quelque chose à l'application après que le formulaire est enregistré.

J'ai effectué une journalisation à différents points du code et il n'y a pas d'erreur. C'est comme si les méthodes save() sur le formulaire ou les modèles auxquels les formulaires sont connectés ne retournent jamais rien - erreur ou autre. Avec ce manque de détails, une réponse pourrait être un rêve pour moi, mais juste un coup de pouce dans la bonne direction ou un moyen de diagnostiquer le problème plus complètement serait fantastique.

+0

avez-vous déjà eu une réponse à cette question? Je vois la même chose sur ubuntu lors de la soumission d'un seul enregistrement via les écrans d'administration avec une base de données vide – mjallday

Répondre

0

Il s'avère que le problème était complètement indépendant de nginx, mais Django avait un délai d'attente pour envoyer un email . Malheureusement, il ne supprime pas un message d'erreur ou une indication indiquant qu'il ne peut pas se connecter au serveur de messagerie.

0

Typiquement 504 dans nginx arrive en raison du délai entre nginx et le processus fastcgi. Vous voudrez peut-être jeter un oeil à vos paramètres nginx et le réglage fastcgi_read_timeout?

Votre journal d'erreurs nginx fournit généralement un peu plus d'informations sur les raisons pour lesquelles les choses ne marchent pas aussi bien. Si vous êtes sur une distribution * nix, c'est généralement dans "/var/log/nginx/error.log"

+0

Je vais modifier ce paramètre ce soir et voir quelle est la différence. Il est étrange que le travail effectué dans le code où les délais d'attente se produisent n'est pas si grave ou prend beaucoup de temps. Dans certains cas, il enregistre un seul modelform puis revient. Merci pour le pointeur. Je vous ferai connaître les résultats. – aezell