月度归档:2011年08月

GAE学习入门笔记

http://code.google.com/intl/zh-CN/appengine/docs/python/gettingstarted/usingwebapp.html
GAE提到:一个 webapp 应用程序包含三部分:

一个或多个 RequestHandler 类,用于处理请求和构建响应
一个 WSGIApplication 实例,按照网址将收到的请求发送给处理程序
一个主要例行程序,用于使用 CGI 适配器运行 WSGIApplication
例子:
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
def get(self):
self.response.headers[‘Content-Type’] = ‘text/plain’
self.response.out.write(‘Hello, webapp World!’)

application = webapp.WSGIApplication(
[(‘/’, MainPage)],
debug=True)

def main():
run_wsgi_app(application)

if __name__ == “__main__”:
main()

发现该页面讲的实例跟sdk本机创建的不一样,sdk中把:
application = webapp.WSGIApplication(
[(‘/’, MainPage)],
debug=True)
放在了main()里面。
同时例子中from google.appengine.ext.webapp.util import run_wsgi_app
所以main()中执行了 run_wsgi_app(application)
而sdk中是 from google.appengine.ext.webapp import util
所以执行是: util.run_wsgi_app(application)

不过显然不同的写法并不影响最终的执行。

同时讲到:webapp 模块位于 google.appengine.ext 包中

该代码定义一个映射到根网址 (/) 的请求处理程序 MainPage。当 webapp 收到网址 / 的 HTTP GET 请求时,它会将 MainPage 类实例化并调用该实例的 get 方法。在该方法中,可以使用 self.request 获得有关请求的信息。通常情况下,该方法在 self.response 上设置属性以准备响应,然后退出。webapp 将基于 MainPage 实例的最终状态发送响应。

应用程序本身由 webapp.WSGIApplication 实例表示。如果处理程序遇到错误或引发未捕捉的异常,则传递给其构造函数的参数 debug=true 将通知 webapp 将堆栈记录打印到浏览器输出。您可能需要从应用程序的最终版本中删除此选项。

函数 run_wsgi_app() 使用 WSGIApplication 实例(或其他与 WSGI 兼容的应用程序对象)并在 App Engine 的 CGI 环境中运行此实例。run_wsgi_app() 与 Python 标准库中的 wsgiref 模块提供的从 WSGI 到 CGI 的适配器相似,但前者包含其他几个功能。例如,它可自动检测应用程序是在开发服务器中运行还是在 App Engine 上运行,如果在开发服务器上运行,则在浏览器中显示错误。

GAE 学习入门笔记

http://code.google.com/intl/zh-CN/appengine/docs/python/gettingstarted/usingwebapp.html
GAE提到:一个 webapp 应用程序包含三部分:

一个或多个 RequestHandler 类,用于处理请求和构建响应
一个 WSGIApplication 实例,按照网址将收到的请求发送给处理程序
一个主要例行程序,用于使用 CGI 适配器运行 WSGIApplication
例子:
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
def get(self):
self.response.headers[‘Content-Type’] = ‘text/plain’
self.response.out.write(‘Hello, webapp World!’)

application = webapp.WSGIApplication(
[(‘/’, MainPage)],
debug=True)

def main():
run_wsgi_app(application)

if __name__ == “__main__”:
main()

发现该页面讲的实例跟sdk本机创建的不一样,sdk中把:
application = webapp.WSGIApplication(
[(‘/’, MainPage)],
debug=True)
放在了main()里面。
同时例子中from google.appengine.ext.webapp.util import run_wsgi_app
所以main()中执行了 run_wsgi_app(application)
而sdk中是 from google.appengine.ext.webapp import util
所以执行是: util.run_wsgi_app(application)

不过显然不同的写法并不影响最终的执行。

同时讲到:webapp 模块位于 google.appengine.ext 包中

该代码定义一个映射到根网址 (/) 的请求处理程序 MainPage。当 webapp 收到网址 / 的 HTTP GET 请求时,它会将 MainPage 类实例化并调用该实例的 get 方法。在该方法中,可以使用 self.request 获得有关请求的信息。通常情况下,该方法在 self.response 上设置属性以准备响应,然后退出。webapp 将基于 MainPage 实例的最终状态发送响应。

应用程序本身由 webapp.WSGIApplication 实例表示。如果处理程序遇到错误或引发未捕捉的异常,则传递给其构造函数的参数 debug=true 将通知 webapp 将堆栈记录打印到浏览器输出。您可能需要从应用程序的最终版本中删除此选项。

函数 run_wsgi_app() 使用 WSGIApplication 实例(或其他与 WSGI 兼容的应用程序对象)并在 App Engine 的 CGI 环境中运行此实例。run_wsgi_app() 与 Python 标准库中的 wsgiref 模块提供的从 WSGI 到 CGI 的适配器相似,但前者包含其他几个功能。例如,它可自动检测应用程序是在开发服务器中运行还是在 App Engine 上运行,如果在开发服务器上运行,则在浏览器中显示错误。