Au départ, j'ai eu une application Django avec le serveur de test inclus. Pour déboguer cette configuration, je peux simplement ajouter un Récemment, j'ai changé à Guncorn pour gagner des benifits perfs. Comment puis-je obtenir un comportement similaire lors de l'utilisation de cette configuration de Gunicorn. J'ai essayé en définissant des paramètres de gunlorn avec Quelqu'un a une solution à cela? P> importer pdb; pdb.set_trace () code> n'importe où dans le code et avoir un point de rupture qui me jette dans un débogueur interactif en terminal (sur la ligne de commande). p>
débog = true code> et
daemon = false code> mais cela ne fonctionne pas. P>
5 Réponses :
Si vous êtes en mesure de lancer GunCorn pointant sur une instance code> code> une instance de la classe code> débroggedApplication code> à partir de la bibliothèque code> werkzeugn code> bibliothèque, vous Sera capable de définir des points de rupture à l'aide du débogueur Werkzeug avec Import IPDB; ipdb.set_trace () code> directement dans votre navigateur.
import django.core.handlers.wsgi
from werkzeug.debug import DebuggedApplication
application = django.core.handlers.wsgi.WSGIHandler()
application = DebuggedApplication(application, evalex=True)
@ Calvin-Cheng: Je ne sais pas comment cela est censé travailler. D'abord, je devrais avoir une exception non gérée afin que le débogueur Werzeug Traceback devienne visible dans l'interface utilisateur (c'est-à-dire le navigateur Web). Ça marche. D'entre eux ligne de commande dans l'interface utilisateur IMPORT IMPORT IPDB; ipdb.set_trace (). Cela provoque une exception, me semble que IPDB n'aime pas sa console (il semble être une classe HTML *, qui ne semble pas complètement tort lorsqu'il devrait fonctionner dans le navigateur.)
Qu'est-ce que j'ai finalement fini par faire est exécuté Vous devez donc avoir 2 référentiels différents dans la même machine, une construction de la production en direct (l'une exécution Espérons que cela aide les autres personnes accro à python manage.py runserver
pdb code>. p>
gundicorn code>) et l'autre étant la construction de test, celle que j'ai besoin de déboguer sur où J'utilise
pdb code>. Lorsque les choses semblent stables sur la construction de test, je fusionner la branche de test
code> avec
branche live code>. Aucun développement ou modification n'a lieu sur
branche live code> de cette façon, j'évite la fusion de conflits. P>
pdb code>;) p>
Cela fait en réalité pas i> fonctionne si vous avez le proxy inverse de HTTPS (E.G. NGINX)
@Kimvais oui vous êtes correct. Si vous savez faire cela en présence d'un proxy http inverse, je suis intéressé à connaître la configuration ...
Je sais seulement comment faire ça à Pycham, mettrea postera comme une réponse
J'ai réussi maintenant à utiliser Gunicron avec Djnago et IPDB. P>
Run J'utilise Django 1.4 et Gunicorn 0.16.1. Ensuite, vous pouvez normalement utiliser le J'essaie de déboguer une application Facebook, donc je ne peux donc pas utiliser le serveur de développement, car Facebook tente d'utiliser SSL et le serveur DEV ne peut tout simplement pas répondre correctement p>
Pendant que je cherchais une solution, j'ai trouvé un post PDB: Utilisation Le débogueur Python de Django qui suggère d'exécuter python -m ipdb manage.py run_gunicorn --debug -t 3600 code> p>
Import IPDB; ipdb.set_trace () code> dans le code. Il n'y a pas besoin de la bibliothèque code> werkzeugn code>. P>
python -m pdb manage.py runserver code> tout le temps. Bien que cela ne soit pas nécessaire avec Django's Dev Server, j'ai décidé de tenter avec Gunicordn et IPDB et cela a fonctionné. P>
Pour exécuter une licorne verte dans une configuration de proxy inverse (sous NGinx) dans un mode de débogueur / débogage, entrez les paramètres suivants dans PYCHARM S RUN / DJANGO / Modifier les configurations: P>
Bien sûr, utilisez n'importe quel port (au lieu de 7777 code>), vous avez configuré votre nginx à proxy à. p>
p>
Qu'est-ce qui utilise GUI pour Python: D?
Cela n'aide pas vraiment. OP veut utiliser pdb code>, pas l'interface graphique de Pycham à déboguer.
OK, j'ai récemment scénagé sur un problème similaire. Je n'ai pas pu appliquer une solution @dudklein (je reçois des erreurs d'E / S tandis que le débogueur essayait de prendre des entrées - IPDB, PDB, etc.)
J'ai utilisé Python distant debbuger - WinPDB et c'est Débogage incorporé . P>
Installez WinPDB dans votre Virtualenv P>
Importer et exécuter du débogueur intégré dans votre code: P>
Run GunCorn avec -Timeout argument p>
Exécuter une vue appropriée à l'aide du navigateur, par exemple. Connectez-vous au débogueur embarqué à l'aide de WinPDB: P>
Si vous avez besoin de tutoriel pour http://127.0.0.1:8000/Your-View/ code> p> li>
winpdb -a /path/to/django/app/views.py
winpdb code> - Ici vous êtes . P> LI>
ol>
p> p>
Avez-vous découvert comment le faire fonctionner?
Oui, veuillez lire ma réponse. C'est ce que je fais maintenant ...
J'ai réussi à utiliser GunCorn et IPDB ensemble. Voir ma réponse ci-dessous. Je suggère également de définir le délai d'attente à une plus grande valeur, vous avez donc le temps de déboguer.
Pourquoi n'avez-vous pas accepté votre propre réponse?