我正在尝试在龙卷风中的请求之间传递一些数据。我有一个名为tcp_con
的变量。
class Application( tornado.web.Application ):
def __init__( self, **overrides ):
handlers = [
( r"/", hd.MainHandler ),
]
settings = { "cookie_secret": "thisismysecret",
"login_url": "/auth/login",
"template_path": os.path.join( os.path.dirname( __file__ ), "templates" ),
"static_path": os.path.join( os.path.dirname( __file__ ), "static" ),
"xsrf_cookies": True
}
# Initializing variables
self.debug = overrides['debug']
self.__is_running_checks = False
self.tcp_con = {}
self.queue = Queue.Queue()
当使用提交表单时,我填写了一些变量,但当我刷新页面时tcp_con
变量为空,如果我再次刷新,则字典再次包含数据,因此有时值是在字典中,有时不是。可能是什么问题?
这是请求手册的一部分:
@tornado.web.authenticated
def get( self ):
"""
"""
print self.application.tcp_con
答案 0 :(得分:1)
您很可能在服务器上有多个龙卷风进程。每个进程都有自己的Application
类。根据要求,您可以从不同的流程获得响应。因此,您无法使用此类来保存应用程序的状态。
来自龙卷风文档(class tornado.tcpserver.TCPServer):
start(num_processes=1)
在IOLoop中启动此服务器。
默认情况下,我们在此过程中运行服务器而不进行任何分叉 额外的子进程。
如果num_processes为None或< = 0,我们检测核心数 可以在这台机器和fork上运行多个子进程。如果 给出num_processes并且> 1,我们叉具体数量 子处理。
由于我们使用进程而不是线程,因此没有共享内存 在任何服务器代码之间。