【发布时间】:2017-03-06 18:25:09
【问题描述】:
我正在使用在 Google App Engine SDK 上本地运行的 Flask 构建一个应用程序。出于某种原因,我的入口点 main.py 只启动了一次。
main.py:
from bootstrap import myapp
app = myapp.bootstrap()
print "I'm bootstrapping"
if __name__ == '__main__':
app.run()
myapp/bootstrap.py:
返回 MyApp.Application 的一个实例
myapp/Application.py:
扩展 Flask,注册路由,...
控制台输出:
INFO 2016-10-24 20:02:10,807 module.py:788] 默认值:“GET / HTTP/1.1”200 12
INFO 2016-10-24 20:02:11,595 module.py:788] 默认值:“GET / HTTP/1.1”200 12
INFO 2016-10-24 20:02:20,137 module.py:402] [默认] 检测到的文件更改:
./main.py
我正在引导
INFO 2016-10-24 20:02:22,199 module.py:788] 默认值:“GET / HTTP/1.1”200 12
INFO 2016-10-24 20:02:28,206 module.py:788] 默认值:“GET / HTTP/1.1”200 12
请求被正确处理,并且每次都会调用路由函数。另一方面,main.py 仅加载一次,并且仅在文件更改时才重新加载(从日志中可以看到)。似乎整个应用程序被启动一次并被缓存。
另外:您在路由方法中分配给应用程序实例的值也被“缓存”并在进一步的请求中可用(这看起来很奇怪)。
这种行为在 Python 中正常吗?还是这种行为特定于 Google App Engine?
【问题讨论】:
-
这是正常行为。应用程序实例继续运行,appengine 基础设施将向可用实例发送请求。我建议您阅读沙盒的工作原理。
-
@TimHoffman:当您发表评论时,我正在输入我的答案。您的评论确实描述了我的问题。谢谢。
标签: python python-2.7 google-app-engine