5

我需要访问一个全局变量,该变量在不同的服务器请求中保持其状态。

在此示例中,全局变量 isr并且在每次请求时递增。

我怎样才能r在cherrypy中全球化?

import cherrypy
import urllib
class Root(object):
    @cherrypy.expose

    def index(self,  **params):

        jsondict = [('foo', '1'), ('fo', '2')]
        p = urllib.urlencode(jsondict)
        if r!=1
          r=r+1
          raise cherrypy.HTTPRedirect("/index?" + p)
        return "hi"
cherrypy.config.update({

                'server.socketPort': 8080

        })
cherrypy.quickstart(Root())
if __name__ == '__main__':
    r=1
4

2 回答 2

7

要访问全局变量,您必须使用global关键字后跟变量名。但是,如果r仅在Root类中使用,我建议您将其声明为类变量:

class Root(object):
    r = 1
    @cherrypy.expose
    def index(self,  **params):
        #...
        if Root.r != 1:
            Root.r += 1
        #...
于 2013-04-07T03:22:00.463 回答
3

我有同样的问题。在意识到我的程序可以访问导入库的成员变量后解决了。

首先,创建一个名为myglobals.py的文件并将其放入其中

r=0
visitors = 0

然后在您的服务器中:

import myglobals  
class Root(object):
        @cherrypy.expose
        def index(self,  **params):
            #...
            if myglobals.r != 1:
                myglobals.r += 1
            #...
于 2014-01-18T00:09:57.293 回答