创建一个可以访问app_globals的Pylons线程

4 投票
2 回答
1871 浏览
提问于 2025-04-16 10:16

我想在我的pylons环境中创建一个后台运行的进程,这个进程不受客户端请求的限制,并且可以访问pylons的app_globals对象。这个进程的主要目的是检查客户端会话是否过期,并进行一些过期后的分析。

这样做可能吗?我试着在config/environment.py文件中创建一个线程,但当我尝试访问app_globals的属性时,出现了以下错误:

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

提前谢谢你,
Will

2 个回答

3

你需要在Pylons框架中注册应用的全局变量(app_globals),这些全局变量是按请求来注册的:

pylons.app_globals._push_object(config['pylons.app_globals'])
1

你想要访问的对象是由pylons为每个请求注册的StackedObjectProxy,这是为了服务线程使用的。

如果你只是想读取它,使用配置中的那个是安全的:

config.get('pylons.app_globals') or config.get('pylons.g')

撰写回答