2009-08-10 4 views
0

Je suis à la recherche d'un moyen quelconque dans le serveur de développement de django qui permettra au serveur de s'arrêter automatiquement à toute exception non interceptée, comme cela est fait avec le mode pdb dans la console ipython.Attraper des exceptions non interceptées via le serveur de développement django

Je sais mettre import pdb; pdb.set_trace() lignes dans le code pour arrêter l'application. Mais cela ne m'aide pas, car la ligne où l'exception est lancée est appelée trop de fois. Donc, je ne peux pas trouver les conditions exactes pour définir un point de rupture conditionnel.

Est-ce possible?

Merci ...

Répondre

2

Vous pouvez définir sys.excepthook à une fonction qui ne import pdb; pdb.pm(), selon this recipe.

+0

D'une certaine manière, je ne peux pas remplacer sys.excepthook: http://stackoverflow.com/questions/1261668/cannot-override-sys-excepthook Est-ce normal? –

+0

@Mert, comme je l'ai expliqué répondre à cette question, ipython (qui dans cette question que vous mentionnez que vous utilisez) est différent. Exécutez donc 'ipython -pdb', ou un simple' python' que cette exception remplace. –

+0

@Alex, Merci pour l'explication. J'ai une autre question: Je peux attraper n'importe quelle exception non interceptée en remplaçant sys.excepthook quand j'exécute un script python. C'est bon. Mais cette recette ne fonctionne pas lorsque j'exécute le serveur django. L'exception est interceptée et enregistrée par django. Est-il possible de faire pdb attraper l'exception? –

Questions connexes