2013-03-17 21 views
2

我想知道响应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() 

编辑:由语法修正代码

回答

0

你可能只是读码FWIW - Django是开源的。但不管怎么说:

  1. 信号接收器顺序在你的第二个片段叫
  2. 调用object_instance.method - 你需要添加括号(并最终通过相关的论证 - 在这种情况下,至少发件人)实际调用该方法。

长话短说:信号主要用于允许应用程序之间的松散耦合。如果你想要并发执行,你必须使用线程或子进程(这可能不是安全的,这取决于执行环境)还是使用像芹菜这样的东西。

+0

谢谢!这也是我也遇到的解决方案。当我探索send()方法的代码时,我发现Django实际上只是为了循环遍历接收器。芹菜似乎是并行执行的解决方案,特别是子任务组。 – flimsy 2013-03-19 09:27:14

相关问题