Python Google App Engine:从yaml文件调用特定方法?

2 投票
1 回答
840 浏览
提问于 2025-04-16 00:31

我刚开始学习使用Google App Engine进行数据库编程,编程语言是Python。我想知道我是否可以在一个Python文件里放多个请求处理类,每个类都有get和post方法。我知道yaml文件可以让我指定哪些脚本在特定的URL下运行,就像下面这个例子:

handlers:
- url: /.*
  script: helloworld.py

那么我该怎么告诉它去运行.py文件中某个类里的特定方法呢?这样做可以吗?我需要把不同的请求处理类分开到不同的Python文件里吗?我对数据库的理解还很浅薄,所以可能说得不太清楚。

谢谢!

1 个回答

3

我在想,我是否可以在一个Python文件里放多个请求处理类,每个类都有get和post方法。

当然可以!那个 app.yaml 文件只是把控制权转给 helloworld.py,这个文件会运行里面定义的 main 函数——这个函数通常会设置一个WSGI应用,根据网址把请求分发到合适的处理类。例如,可以看看这个教程里很早的示例代码 这里

application = webapp.WSGIApplication(
                                     [('/', MainPage),
                                      ('/sign', Guestbook)],
                                     debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

我没有复制 import 语句和类定义,因为这些不重要:这是一个示例,展示了一个 .py 文件如何分发到不同的处理类(在这个例子中是两个)。

当然,这并不意味着yaml文件可以让你调用任何方法:实际上,它是把控制权交给一个 .py 文件,而这个文件的 main 函数负责后续的所有操作(例如,使用App Engine自带的 webapp 小框架时,通常会根据传入请求的具体HTTP方法和网址调用 getpost 方法 [[或者 putdelete 等等,如果你也支持这些方法——不过大多数情况下不会,除非你特别想做RESTful风格的应用;-)]])。

撰写回答