我对GAE的Python工作原理感到有些困惑。
如果我有一个变量x
,它不在memcache中而不在db中,它是否在下次运行脚本时保留它的值(即,对于下一个用户)?< / p>
class somePage(webapp2.RequestHandler):
x = 1
def get(self):
if x == 2:
foo()
else:
bar()
x = 2
foo()
会被调用吗?
如果在x
之外宣布somePage
会怎样?
x = 1
class anotherPage(webapp2.RequestHandler):
def get(self):
if x == 2:
foo()
else:
bar()
x = 2
脚本&#34;新鲜&#34;每次它被击中,或者就像这样做:
$ python
>>>
然后让每个用户在同一个键盘上排队(不打算)吗?
答案 0 :(得分:1)
tldr; GAE的工作方式,全局可变变量不是共享上下文的可行选择。
与大多数完全管理的PaaS解决方案一样,GAE的主要目标之一是自动可扩展性。您可以同时运行多个程序实例;调度员可以随时杀死和/或启动实例,每个实例都在完全隔离的环境中运行。
由于实例之间的隔离程度较高,通过全局可变变量共享上下文不是一个可行的选择 - 它有时似乎有效,但你不能依赖它。
为了分享背景,有几个选择:
您也可以使用他们的IaaS服务运行自己的服务(但这会破坏使用PaaS的一些主要原因)。