В моем собственном приложении 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=
Итак, я переместил файлы ключей и папки из приложения оболочки в свой каталог приложений.
Когда я запускаю свое приложение из SDK, я вижу в браузере приложение оболочки на
http://dwms.appspot.com/shell
в моем приложении, но после того, как я нажал 'enter' после написания чего-то, скажите >>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()"
>>>></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()
снова - поэтому сейчас проблема в том, что я вижу приложение оболочки, когда я иду на
http://dwms.appspot.com/shell
и введите
>> a=10
но ничего не происходит после ввода утверждений в форму после >>a=10
В случае, если это уместно ... Ниже вы заметите, что я также закомментировал некоторые строки, которые я скопировал из обработчиков приложений старой оболочки app.yaml
в app.yaml
моего приложения. ПРИМЕЧАНИЕ: После экспериментов с комментариями В приведенных ниже строках не было никакой разницы в том, как оболочка не работает в моем приложении ... Причина комментариев ниже в том, что я подумал, что это может понадобиться, чтобы оболочка знала, что происходит со всеми глобальными переменными в все приложение, а не только где работает оболочка? (Я могу быть смущен по этому поводу?)
Мой 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