2

是否可以获得给定 Flask 应用程序(添加了任何其他软件包)可能发送的所有信号的列表?(即,因此可以订阅?)

还是 Flask 应用程序 / Flask 框架在发送信号之前不知道?

4

2 回答 2

2

假设所有包在导入时都会创建它们的信号(并假设您已经导入了所有您关心的包),您应该能够通过迭代它来内省通过 blinker.signal 创建的所有命名信号。 blinker.signal是 的子类weakref.WeakValueDictionary,因此您可以简单地调用keys它来获取信号的所有名称:

from blinker import signal
# import everything else here

print sorted(signal.keys())

请参阅:blinker.base了解更多信息。

于 2012-12-15T02:46:57.947 回答
1

先前接受的答案(由 Sean Vieira)不适用于 Python 3 上最新版本的 Blinker (1.4)。

要获得所有可用的信号(在 1.4 和 1.3 上经过验证),您应该

from blinker import signal

all_signals = signal.__self__.keys()
于 2021-01-18T13:04:04.937 回答