Django:信号接收器是否同时运行?

时间:2013-03-17 19:57:10

标签: django concurrency signals

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

编辑:对代码进行语法修正

1 个答案:

答案 0 :(得分:0)

你可能刚刚读过代码FWIW - Django是开源的。但无论如何:

  1. 信号接收器按顺序调用
  2. 在你的第二个片段中,你调用object_instance.method - 你需要添加parens(并最终传递相关参数 - 在本例中至少是发送者)来实际调用该方法。
  3. 总而言之:信号主要用于允许应用程序之间的松散耦合。如果你想要并发执行,你必须使用线程或子进程(这可能不安全,具体取决于执行环境)或者像celery一样。