6

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()

編集: コードの構文を修正しました

4

1 に答える 1

2

FWIW というコードを読んだだけで、Django はオープン ソースです。とにかく:

  1. シグナルレシーバーは順次呼び出されます
  2. in your second snippet you are not calling object_instance.method - you need to add the parens (and eventually pass the relevant arguments - in this case at least the sender) to actually call the method.

To make a long story short : signals are mainly used to allow loose coupling between applications. If you want concurrent execution, you either have to use threads or subprocesses (which might not be safe depending on the execution environment) or go for something like celery.

于 2013-03-18T15:08:00.953 に答える