Django:信号接收器是否同时运行?
问题描述:
我想知道响应Django信号的侦听器方法是顺序还是同时执行。从本质上讲,是这样的:Django:信号接收器是否同时运行?
比这个for object_instance in object_instance_list:
custom_signal.connect(object_instance.method)
custom_signal.send(self)
不同:
for object_instance in object_instance_list:
object_instance.method()
编辑:由语法修正代码
答
你可能只是读码FWIW - Django是开源的。但不管怎么说:
- 信号接收器顺序在你的第二个片段叫
- 你不调用object_instance.method - 你需要添加括号(并最终通过相关的论证 - 在这种情况下,至少发件人)实际调用该方法。
长话短说:信号主要用于允许应用程序之间的松散耦合。如果你想要并发执行,你必须使用线程或子进程(这可能不是安全的,这取决于执行环境)还是使用像芹菜这样的东西。
谢谢!这也是我也遇到的解决方案。当我探索send()方法的代码时,我发现Django实际上只是为了循环遍历接收器。芹菜似乎是并行执行的解决方案,特别是子任务组。 – flimsy 2013-03-19 09:27:14