【发布时间】:2012-12-16 10:36:27
【问题描述】:
如果我有一个RequestHandler 类,它有一个在请求期间初始化的变量(下面的self.var)。可以在并发环境(threadsafe=true)中覆盖该变量吗?例如
class MyRequestHandler(webapp2.RequestHandler):
var = None
def get(self, id):
self.var = value_from_datastore(id)
# Do something that takes time
# ...
self.response.write.out(self.var)
self.response.write.out(self.var2)
self.var 是否可以在设置在 get 方法的顶部和在输出中使用之间被第二个请求(可能来自不同的用户)覆盖?
谢谢,
贝尔德
更新:
我的(错误的)印象是var = None 将其声明为实例变量。感谢您纠正我的(巨大的)误解;-)
如果我在__init__ 中做“声明”,我会更好吗?我认为这归结为是否为每个线程创建了 MyRequestHandler,或者是否为所有共享线程创建了一个。不同用户的不同请求还会有干扰吗?
class MyRequestHandler(webapp2.RequestHandler):
def __init__(self):
self.var = None
def get(self, id):
self.var = value_from_datastore(id)
# Do something that takes time
# ...
self.response.write.out(self.var)
self.response.write.out(self.var2)
谢谢,
贝尔德
【问题讨论】: