Python tornado全局变量

Python tornado全局变量,python,global-variables,tornado,Python,Global Variables,Tornado,我有一个Python Tornado应用程序。我想要在多个文件中共享变量。以前我用python文件名global.py声明和初始化它们,并将其导入其他文件。这是一个好主意,直到我的一些变量需要从数据库中查询,所以每次我导入global.py只获取一个值时,所有的查询都在运行,导致我的应用程序变慢。 下一步是在tornado start.py中定义变量,如下所示: class RepublishanApplication(tornado.web.Application): def __i

我有一个Python Tornado应用程序。我想要在多个文件中共享变量。以前我用python文件名global.py声明和初始化它们,并将其导入其他文件。这是一个好主意,直到我的一些变量需要从数据库中查询,所以每次我导入global.py只获取一个值时,所有的查询都在运行,导致我的应用程序变慢。
下一步是在tornado start.py中定义变量,如下所示:

class RepublishanApplication(tornado.web.Application):

    def __init__(self):
        ##################################################
        # conn = pymongo.Connection("localhost", 27017)
        self.Countries = GlobalDefined.Countries
        self.Countries_rev = GlobalDefined.Countries_rev
        self.Languages = GlobalDefined.Languages
        self.Categories = GlobalDefined.Categories
        self.Categories_rev = GlobalDefined.Categories_rev
        self.NewsAgencies   = GlobalDefined.NewsAgencies
        self.NewsAgencies_rev = GlobalDefined.NewsAgencies_rev
        self.SharedConnections = SharedConnections
self.application.Countries 
我可以在如下处理程序中访问这些变量:

class RepublishanApplication(tornado.web.Application):

    def __init__(self):
        ##################################################
        # conn = pymongo.Connection("localhost", 27017)
        self.Countries = GlobalDefined.Countries
        self.Countries_rev = GlobalDefined.Countries_rev
        self.Languages = GlobalDefined.Languages
        self.Categories = GlobalDefined.Categories
        self.Categories_rev = GlobalDefined.Categories_rev
        self.NewsAgencies   = GlobalDefined.NewsAgencies
        self.NewsAgencies_rev = GlobalDefined.NewsAgencies_rev
        self.SharedConnections = SharedConnections
self.application.Countries 

它工作得很好。但问题是,我只能在处理程序类中访问这些变量,如果我想访问它们,我必须将它们传递给函数。我认为这不是一个好主意。您是否有任何建议,可以随时随地访问这些变量,而不必将应用程序实例传递给我的所有函数,甚至可以通过其他方式来帮助我?

将全局变量放在globals.py文件中是一种很好的方法。如果在导入globals.py时使用PyMongo从MongoDB查询值,则该工作仅在流程中第一次导入globals.py时完成。其他导入的globals.py从sys.modules缓存中获取模块。

感谢您的回复,但我认为这不正确。我有一些文件需要每30秒运行一次。因此每30秒执行一次Globals.py,然后就会有很多查询。我已经用探查器监视过了。您还有其他想法吗?所以在调用Python解释器之间要存储一些变量?在这种情况下,要么将它们存储在本地磁盘上的文件中,要么在下次Python运行时再次从数据库中查询它们。