在不使用全局变量的情况下在GAME中构建数据流

时间:2013-05-10 21:49:11

标签: python google-app-engine global-variables

我正在GAE中设置应用。该应用程序依赖于来自客户端的最多三个连续的AJAX调用,这些调用在每个请求中生成一个单独的字符串。我想保留并组合服务器端的数据,以便对其进行更多的解析。

我被告知使用全局变量确实非常糟糕,但我不确定如何在不使用全局变量来组合数据的情况下构建此流程。有什么建议?我不想做一个单独的AJAX调用,因为我想继续更新用户的进度。抽象地看起来像这样 -

finalData = ""

class func1(webapp2.RequestHandler):
    def get(self):
        func1data = some.command()
        global finalData
        finalData += func1data


class func2(webapp2.RequestHandler):
    def get(self):
        func2data = some.command()
        global finalData
        finalData += func2data


class func3(webapp2.RequestHandler):
    def get(self):
        func3data = some.command()
        global finalData
        finalData += func3data

1 个答案:

答案 0 :(得分:1)

这是一个可怕的想法,因为它不起作用。或者更糟糕的是,当您的请求碰巧碰到同一个实例时,它似乎有时可能会起作用,但是否则无法正常工作。

将数据存储在数据存储区/内存缓存中的实体中(如果使用ndb,它将自动放入内存缓存中),并使用get()获取每个连续请求的数据。

替代方法是使用会话,或者将cookie中的数据返回给客户端,以便在下次请求时将其发送回服务器(尽管这会不安全地允许客户端修改该值)。