Werkzeug中的线程和本地代理的使用方法

6 投票
1 回答
3462 浏览
提问于 2025-04-17 16:15

首先,我想确认一下我对这个功能的理解是否正确。这个本地代理的功能是用来在一个线程内,通过模块(包)共享变量(对象)。我理解得对吗?

其次,我对它的使用还是不太清楚,可能是因为我对功能的理解有误。我在用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)

这就是你想要的吗?

撰写回答