我有一个名为filterspecs.py
的文件,其中包含3件事:
tls = threading.local()
django.contrib.admin.views.main.ChangeList
django.contrib.admin.filterspecs.FilterSpec
目标:我想将list
的实例可用的值A
传递给B
的实例。由于A和B的生命周期由框架(Django)管理,我无法想到在实例之间传递数据的私有方式(使用Queue
将是一种过度杀伤)。
尝试#1 失败。 在A类中,列表被添加到threadlocal。
1. tls.list_display = ['foo', 'bar']
但是在B组中,以下内容返回False
:
2. hasattr(tls, 'list_display')
为了比较,如果我通过
运行它,这在apache / mod_wsgi之外工作manage.py runserver
我查看了日志,发现不同的线程正在执行第1行和第1行。 2。
我还有哪些方法可以解决这个问题?
答案 0 :(得分:1)
听起来您希望不仅在两个类之间共享数据,而且在两个完全不同的HTTP请求之间共享数据。 HTTP是无状态的 - Apache不是为容纳有状态的Web应用程序而设计的。您必须将数据保存到数据库并在第二个请求中将其读回。 (或者您可以在单独的流程中运行Web应用程序并自行管理状态 - 这实际上会在您的工作描述中添加“数据库程序员”。不建议这样做。)
您的两段代码可能不只是在不同的线程中运行,它们可能在不同的进程中运行。