我需要访问一个全局变量,使其状态保持不同的服务器请求。
在此示例中,全局变量为r
,并在每次请求时递增。
如何让r
全球化?
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
答案 0 :(得分:6)
要访问全局变量,必须使用global
关键字后跟变量名称。但是,如果r
仅在Root
类中使用,我建议您将其声明为类变量:
class Root(object):
r = 1
@cherrypy.expose
def index(self, **params):
#...
if Root.r != 1:
Root.r += 1
#...
答案 1 :(得分: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
#...