2013-03-17 20 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

相關問題