1
我正在嘗試編寫一個Django自定義命令,該命令將用作與物理連接到服務器的硬件進行交互的守護進程。出於顯而易見的原因,我不想在我的Django視圖中運行硬件相關的命令;相反,我寧願讓視圖只與模型交互,並讓守護進程監聽模型中的Django post_save信號。Django自定義命令似乎沒有從正在運行的Django服務器接收post_save信號
爲了測試,我有這樣的自定義命令:
from django.core.management.base import BaseCommand
from django.core.management.base import CommandError
from thermostat.models import Relay
from thermostat.models import Sensor
from thermostat.models import Thermostat
from django.db.models.signals import post_save
import time
class Command(BaseCommand):
def handle(self, *args, **options):
post_save.connect(self.saved)
t = Thermostat.objects.get()
t.save()
time.sleep(30)
def saved(self, sender, **kwargs):
self.stdout.write(str(sender))
self.stdout.write(str(kwargs))
第一.save()方法被認可和預期的文本被寫入到控制檯的標準輸出。但是,在瀏覽器中與應用程序交互時或者在CLI中手動保存實例時,它似乎沒有收到任何信號。
我錯過了什麼?