Ich denke nicht, dass dieses Problem für PyDev, sondern für jeden Python-Debugger einzigartig ist.
Mit Eclipse und pydev kann ich meinen WSGI-Handler in einem dev_appserver-Prozess (Google app engine development server) nicht unterbrechen. Ich bin mir nicht 100% ig sicher, aber ich denke, das ist eine Regression in GAE 1.7.6 oder 1.7.7, da ich fast sicher bin, dass ich meinen Code debuggen konnte, bevor ich auf 1.7.7 upgraden konnte.
Es scheint, dass GAE einen neuen Prozess ('_python_runtime.py') erstellt, der nicht von PyDev gesteuert wird. Ich konnte keinen Hinweis finden, dass das Feature "Debugging-Subprozesse" in PyDev verfügbar ist, also bin ich jetzt ein wenig verloren.
Betrachtet man den GAE-Code (1.7.7), so erscheint der Subprozess in tools / devappserver2 / http_runtime.py, der safe_subprocess.py/start_process
aufruft.
Durch all das herumgeirrt habe ich keine offensichtliche Methode gesehen:
1. Erzählen Sie GAE vom selben Prozess zum Benutzerhandler.
2. Bitten Sie GAE, die Befehlszeile des neuen Projekts von python _python_runtime.py
auf python pydev.py ... --file _python_runtime.py
zu ändern (und selbst dann nicht sicher, ob PyDev es aufnehmen kann).
Irgendwelche Vorschläge? Ist das wirklich eine Regression?
EDIT (Teilantwort):
Hier ist eine Teilantwort. IN SDK 1.7.6 Google App Engine hat einen komplett neuen Server. Der Server ist jetzt ein Multi-Prozess. Der Hauptprozess erzeugt Unterprozesse (Laufzeit genannt), um die WSGI-Handler auszuführen. Diese Unterprozesse werden nicht debuggt.
Diese Änderung verursachte eine Menge Reaktionen in der Community, aber anscheinend lebt die GAE-Community hauptsächlich in den Google-Gruppen und nicht in SO (etwas, das mir bis gestern nicht bekannt war). Hier ist ein Link zur Diskussion:
Es gibt grundsätzlich zwei Lösungen:
Das einfachste wäre, den alten Server zu verwenden, der ab 1.7.7 noch verfügbar ist. Statt dev_appserver.py starten Sie einfach old_dev_appserver.py. Wechseln Sie in Eclipse PyDev zu Debug Configuration ... und ersetzen Sie das 'Main Module' durch $ (GOOGLE_APP_ENGINE) /old_dev_appserver.py und starten Sie es, als wäre der neue Server nie passiert. Diese Lösung hat natürlich den Nachteil, dass ein älterer Server ausgeführt wird, und es ist nicht bekannt, wie lange diese Einstellung beibehalten wird.
Die zweite Lösung ist ein wenig mehr involviert, und ich konnte es noch nicht vollständig knacken. Es basiert auf der Remote-Debugging-Funktion von PyDev und der Fähigkeit, GAE zu sagen, dass es zu Beginn des Laufzeitprozesses ein Skript ausführen soll. So wird es gemacht:
Einige verwandte Links:
Das war in der Tat eine Regression, die in 1.8.3 behoben wurde: Ссылка .
Tags und Links google-app-engine pydev