是否可以获取给定Flask应用程序(添加了任何其他软件包)可能发送的所有信号的列表? (即因此可以订阅?)
或者在发送信号之前,Flask应用程序/ Flask框架是否知道?
答案 0 :(得分:2)
假设所有软件包在导入时都会创建它们的信号(假设您已经导入了所有您关心的软件包),您应该能够通过遍历它来内省通过blinker.signal创建的所有命名信号。 blinker.signal
是weakref.WeakValueDictionary
的子类,因此您只需在其上调用keys
即可获取所有信号名称:
from blinker import signal
# import everything else here
print sorted(signal.keys())
有关详细信息,请参阅:blinker.base
。
答案 1 :(得分:1)
先前接受的答案(由 Sean Vieira 提供)不适用于 Python 3 上最新版本的 Blinker (1.4)。
要获取所有可用信号(已在 1.4 和 1.3 上验证),您应该
from blinker import signal
all_signals = signal.__self__.keys()