我想在我的Pylons项目中通过python Queue对象与它进行交互,为重度计算创建一个单独的线程。问题是我需要访问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 :(得分:0)
可能你必须将app_globals传递给线程作为启动参数或通过队列传递吗?我并不害羞,但我认为app_globals实现为threading.local
EG。
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()