2011-08-12 26 views
0

我想创建一个单独的线程,用于在我的Pylons项目中通过python Queue对象与其交互的繁重计算。问题是我需要去app_globals对象。当我尝试这样做,我得到一个从一个单独的线程访问app_globals

TypeError: No object (name: app_globals) has been registered for this thread 

我也试图访问这样app_globals:

app_globals = config.get('pylons.app_globals') 
self.cadfile = app_globals.pm.get_upload_path(session, 'cadfile') 

但后来我得到另一个错误:

AttributeError: 'NoneType' object has no attribute 'pm' 

应该如何我从一个单独的线程访问app_globals?

回答

0

可能是你必须通过app_globals线程作为开始参数或传递它通过队列?我不舒服,但我认为app_globals实现为threading.local

例如。

class MyWorker(threading.Thread): 
    def __init__(self, local_app_globals, *args, **kwargs): 
     self.app_globals=local_app_globals 
     super(MyWorker, self).__init__(*args, **kwargs) 

    def run(): 
     #use self.app_globals as app_globals 

t=MyWorker(app_globals) 
t.start()