Werkzeug中的线程和本地代理的使用方法
首先,我想确认一下我对这个功能的理解是否正确。这个本地代理的功能是用来在一个线程内,通过模块(包)共享变量(对象)。我理解得对吗?
其次,我对它的使用还是不太清楚,可能是因为我对功能的理解有误。我在用Flask。如果我有两个模块:A和B。我想从模块A导入对象C到模块B。但是我不能用通常的方式,from A import C
,因为这样会导致循环导入,之后就会出现导入错误(ImportError)。我该如何用Werkzeug的本地代理来解决这个问题?我真的需要用Werkzeug吗?
模块A:
from werkzeug.local import LocalSomething # LocalProxy or LocalStack
C = 'C'
# Somehow add C to LocalSomething
模块B:
from werkzeug.locla import LocalSomething
C = LocalSomething()['C']
1 个回答
7
模块 Z:
from werkzeug.local import Local
myLocals = Local()
模块 A:
from Z import myLocals
myLocals.C = "C"
模块 B:
from Z import myLocals
C = getattr(myLocals, "C", None)
这就是你想要的吗?