是否可以在给定的Flask应用程序中列出所有可用信号?

时间:2012-12-14 14:42:16

标签: python signals flask

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

或者在发送信号之前,Flask应用程序/ Flask框架是否知道?

2 个答案:

答案 0 :(得分:2)

假设所有软件包在导入时都会创建它们的信号(假设您已经导入了所有您关心的软件包),您应该能够通过遍历它来内省通过blinker.signal创建的所有命名信号。 blinker.signalweakref.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()