链接问题在我自己的应用程序中嵌入应用程序引擎的shell应用程序,以获取帮助编码

时间:2010-02-10 07:22:45

标签: python google-app-engine httphandler

在我自己的App Engine应用程序中,在浏览器中,我想通过模拟访问python解释器的>>来搞乱新代码。在浏览器窗口中嵌入此应用程序 - > http://shell.appspot.com/

可以shell_20091112.tar.gz

获得http://code.google.com/p/google-app-engine-samples/downloads/detail?name=shell_20091112.tar.gz&can=2&q=

所以我将密钥文件和文件夹从shell应用程序移动到我自己的app目录中。 当我从SDK启动我的应用程序时,我可以在浏览器中看到

的shell应用程序
http://dwms.appspot.com/shell

在我的应用中,但是在我写了一些东西之后点击'输入'说>>a=1 ... 没有任何反应,所以假设从表单到我的应用程序的处理程序链接是错误的? (对不起,如果我的行话不正确)。

我应该从shell.html获取信息的表格如下所示:

<form id="form" action="shell.do" method="get">
  <nobr>
  <textarea class="prompt" id="caret" readonly="readonly" rows="4"
            onfocus="document.getElementById('statement').focus()"
            >&gt;&gt;&gt;</textarea>
  <textarea class="prompt" name="statement" id="statement" rows="4"
            onkeypress="return shell.onPromptKeyPress(event);"></textarea>
  </nobr>
  <input type="hidden" name="session" value="{{ session }}" />
  <input type="submit" style="display: none" />
</form>

所以我认为问题是,当服务器从客户端获取'shell.do'时,我的应用程序没有响应,因为我做了或没做出或做错了......

在旧的shell.py上,我将网页复制到我的应用程序目录中,我注释掉main()函数中的所有行:

#def main():
  #application = webapp.WSGIApplication(
    #[('/shell', FrontPageHandler),
     #('/shell/shell.do', StatementHandler)], debug=_DEBUG)
  #wsgiref.handlers.CGIHandler().run(application)


if __name__ == '__main__':
  #main()

并通过将这些类似的链接添加到我自己的main.py来替换链接或管道信息,如下所示:

application = webapp.WSGIApplication(
                                     [('/', MainPage),
          ('/shell',shell.FrontPageHandler),
                                      ('shell.do', shell.StatementHandler),
                                      ('/sign', Guestbook),
          ('/zxy/.*', PNGserver) ],
                                     debug=True)


def main():
    run_wsgi_app(application)



if __name__ == "__main__":
    main()

再次 - 所以现在的问题是,当我去

时,我看到了一个shell应用程序
http://dwms.appspot.com/shell

并输入

>> a=10

但在>>a=10

之后在表单中输入语句后没有任何反应

如果它是相关的......下面你会注意到我还注释了我从旧shell的应用程序处理程序app.yaml复制到我应用程序的app.yaml的一些行。注意:在通过取消注释以下行进行实验之后,它在我的应用程序中如何无法运行shell没有区别......以下评论的原因是我认为shell可能需要知道所有这些都在发生整个应用程序中的全局变量不仅仅是shell运行的位置? (我可能会对此感到困惑?)

我的app.yaml如下:

application: dwms
version: 1
runtime: python
api_version: 1

handlers:
- url: /stylesheets
  static_dir: stylesheets

- url: /.*
  script: main.py

- url: /static
  static_dir: static
  expiration: 1d

- url: /remote_api
  script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py

# if you're adding the shell to your own app, change this regex url to the URL
# endpoint where you want the shell to run, e.g. /shell . You'll also probably
# want to add login: admin to restrict to admins only.
#
#- url: /shell
#  script: shell.py

1 个答案:

答案 0 :(得分:1)

我自己的问题的答案是安装以下shell控制台,非常简单,看起来非常有用:

http://con.appspot.com/console/help/about