Python Google App Engine是否为每个请求运行一个应用实例?还是所有的请求?
使用google应用程序引擎:Python Google App Engine是否为每个请求运行一个应用实例?还是所有的请求?,python,google-app-engine,Python,Google App Engine,使用google应用程序引擎: # more code ahead not shown application = webapp.WSGIApplication([('/', Home)], debug=True) def main(): run_wsgi_app(application) if __name__ == "__main__": main() 如果两个不同的用户在两台不同的机器上请求网页,将调用
# more code ahead not shown
application = webapp.WSGIApplication([('/', Home)],
debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
如果两个不同的用户在两台不同的机器上请求网页,将调用服务器的两个单独实例
还是只有一个服务器实例一直在运行,处理所有请求
如果一个用户在同一个浏览器中打开网页两次,效果如何
编辑:
根据下面的答案,一个实例可以依次处理来自不同用户的请求。然后考虑下面的代码片段,取自谷歌给出的例子:
class User(db.Model):
email = db.EmailProperty()
nickname = db.StringProperty()
1、电子邮件和昵称在这里定义为类变量?
2、同一个服务器实例处理的所有请求共享相同的变量,因此会错误地相互干扰吗?(比如,一个人的电子邮件出现在另一个人的页面上)
另外,我知道我应该更多地阅读手册和文档,我正在这样做,但是来自经验丰富的程序员的回答将真正帮助我更快、更全面地理解,感谢appengine根据请求量动态地构建和删除实例 发件人: 应用程序引擎应用程序由 任意给定时间的任意数量的实例 时间,取决于 您的应用程序收到的请求。 作为您申请的请求 增加,数量也会增加 为它供电的实例 每个实例都有自己的队列 传入请求。应用程序引擎监视器 每个队列中等待的请求数 实例的队列。如果应用程序引擎 检测应用程序的队列 由于增加了 加载时,它会自动创建一个新的 要处理的应用程序的实例 那负载 应用程序引擎反向缩放实例 当请求量减少时。在这个 通过这种方式,应用程序引擎确保所有 应用程序的当前实例 正被用于优化效率。 这种自动缩放功能可以使运行 应用程序引擎如此经济高效 当应用程序未被使用时 全部,应用程序引擎关闭其 关联实例,但很容易 一旦加载,就立即重新加载 需要
一个实例可以在其生命周期内处理许多请求。在python运行时的线程模型中,每个实例在任何给定时间都只能处理一个请求。如果两个请求同时到达,则单个实例可能会逐个处理它们,或者可能会生成第二个实例来处理该请求
编辑:
一般来说,每个请求使用的变量的作用域都是RequestHandler实例的
.get()
或.post()
方法,因此不能“泄漏”到其他请求中。在脚本中使用全局变量时应该小心,因为这些变量将缓存在实例中,并在请求之间共享。不要在不知道自己为什么要使用globals的情况下使用globals(这对于任何应用程序都是一个很好的建议),这样你就可以了。RE:email/昵称作为类变量。它们是属性
,您不在使用该类实例的类上工作。ie您不需要User.email=”x@x.com“
youdou=User();u、 电子邮件=”x@x.com“