Uri*_*Uri 9 google-app-engine pydev
我认为这个问题不是PyDev独有的,而是任何python调试器.
使用Eclipse和pydev,我无法在dev_appserver(Google应用引擎开发服务器)进程中打破我的WSGI处理程序.我不是100%肯定,但我认为这是GAE 1.7.6或1.7.7的回归,因为我几乎可以肯定我能够在升级到1.7.7之前调试我的代码
似乎GAE创建了一个不受PyDev控制的新进程('_python_runtime.py').我找不到PyDev中有"调试子进程"功能的任何证据,所以现在我有点迷失了.
看看GAE代码(1.7.7),看来子进程是在tools/devappserver2/http_runtime.py中调用的safe_subprocess.py/start_process
.
闲逛我没有看到任何明显的方法:1.从同一个过程告诉GAE服务器到用户处理程序.2.告诉GAE将新项目的命令行更改python _python_runtime.py
为python pydev.py ... --file _python_runtime.py
(即使这样,不确定PyDev是否能够将其取出).
有什么建议吗?这真的是回归吗?
编辑(部分答案):
这是部分答案.在SDK 1.7.6中,Google App Engine有一个全新的服务器.服务器现在是一个多进程.主进程生成子进程(称为运行时)以运行WSGI处理程序.这些子进程未被调试.
这种变化在社区中引起了很多反响,但显然GAE社区主要生活在谷歌群组中,而不是在SO中(直到昨天我才知道这一点).以下是讨论的链接:
https://groups.google.com/forum/?fromgroups=#!topic/google-appengine/ep5BWYKpQpU
基本上有两种解决方案:
最简单的方法是使用旧的服务器,从1.7.7开始仍然可用.而不是dev_appserver.py,只需启动old_dev_appserver.py即可.在Eclipse PyDev中,转到Debug Configuration ...,并将'Main Module'替换为$(GOOGLE_APP_ENGINE)/old_dev_appserver.py,并启动,好像新服务器从未发生过一样.这个解决方案显然具有运行旧服务器的缺点,并且不知道该设置将保持多长时间.
第二个解决方案涉及更多,我还无法一路解决它.它基于PyDev的远程调试功能,并能够告诉GAE在运行时进程开始时运行脚本.所以这是怎么做的:
# gae_runtime_startup.py
import pydevd;
pydevd.settrace()
Run Code Online (Sandbox Code Playgroud)
一些相关链接:
归档时间: |
|
查看次数: |
1638 次 |
最近记录: |