【发布时间】:2010-11-06 14:33:01
【问题描述】:
可通过 localhost:8080/_ah/admin 访问的交互式控制台对于调试 App Engine 应用非常有用。
我总是发现自己一遍又一遍地导入相同的模块,尤其是模型。
我研究了猴子修补交互式控制台以自动导入这些模型,但我很难过。理想情况下,我可以从我的应用程序中执行此操作,这样我就不需要在每次更新 SDK 时重新应用补丁。
我会调查并希望找到答案,如果您对如何完成此操作有任何想法,请告诉我。
【问题讨论】:
可通过 localhost:8080/_ah/admin 访问的交互式控制台对于调试 App Engine 应用非常有用。
我总是发现自己一遍又一遍地导入相同的模块,尤其是模型。
我研究了猴子修补交互式控制台以自动导入这些模型,但我很难过。理想情况下,我可以从我的应用程序中执行此操作,这样我就不需要在每次更新 SDK 时重新应用补丁。
我会调查并希望找到答案,如果您对如何完成此操作有任何想法,请告诉我。
【问题讨论】:
好问题!交互式控制台的相关代码位于 google/appengine/ext/admin/init.py:188 的 InteractiveExecuteHandler 中。具体来说,它执行如下代码:
try:
compiled_code = compile(code, '<string>', 'exec')
exec(compiled_code, globals())
except Exception, e:
traceback.print_exc(file=results_io)
请注意,对于全局变量,它只是使用它所在模块的全局变量。因此,为了提供您自己的导入,您需要做的就是:
【讨论】:
我最终使用了 App Engine Console 项目,该项目带有一个 autoexec.py,它提供了我所询问的功能。
【讨论】:
我不确定这是否是您想要的,但您可以编辑交互式控制台页面的 html 模板以输入不同的默认文本。它位于:
./google_appengine/google/appengine/ext/admin/templates/interactive.html
这将适用于您的所有应用程序,正如您所提到的,每次 SDK 更新时您都必须这样做。
【讨论】: