2011-05-01 2 views
1

J'ai un service web qui exécute django/apache/mod_wsgi que j'essaye de déboguer - il faut beaucoup de temps pour s'exécuter côté serveur, mais avec certains paramètres ça expire juste. J'ai essayé de faire un wget directement sur l'URI, et en utilisant urllib2. Je reçois l'erreur suivante de wget:Comment déboguer mod_wsgi/django/apache/wget timeout

Read error (Connection timed out) in headers 

Pendant ce temps, urllib2 ne renvoie rien du tout - il semble être erroring en silence. J'ai essayé d'augmenter la directive Timeout dans ma configuration apache, mais cela ne semble pas aider. Le service fonctionne bien avec différents paramètres. Comment dois-je déboguer cela? D'où vient le timeout sinon apache?

Répondre

0

Les chances sont le problème est dans votre code de services. Assurez-vous que votre code de services est en cours d'exécution et retourne à apache avant d'essayer de déboguer Apache.

Je vous suggère de suivre le code des services en ajoutant des instructions de sortie. Assurez-vous d'ajouter une instruction ouput juste avant que votre code ne retourne à mod_wsgi (la dernière ligne de la fonction que mod_wsgi appelle.) Les chances sont ce que vous verrez est le code suspendu à un endroit particulier. C'est toutes les instructions de débogage avant que ce point apparaisse dans le code, aucune des instructions de sortie après ce point n'apparaîtra.

Si vous ne souhaitez pas ajouter d'instruction de débogage, essayez d'utiliser un débogueur pour parcourir le code.

Une autre option consiste à utiliser le serveur de développement django et de voir si le délai d'attente se produit lors de l'exécution sans apache. Cependant, étant donné que le serveur de développement est mono-thread, votre code ne sera pas bloqué si le problème que vous rencontrez est un bug lié à la concurrence.

+1

@ user560833 alors qu'est-ce que ça a fini par être? –