Доступ к app_globals из отдельного потока - PullRequest
0 голосов
/ 12 августа 2011

Я бы хотел создать отдельный поток для тяжелых вычислений в моем проекте 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 из отдельного потока?

1 Ответ

0 голосов
/ 12 августа 2011

Может быть, вы должны передать 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()
...