Python 如果接收器函数存在于管理命令中,则在何处注册django信号
实际上,我有一个独立的脚本,它从外部源获取数据并将其转储到django通道层。启动时,脚本查询数据库中的所有Python 如果接收器函数存在于管理命令中,则在何处注册django信号,python,django,django-signals,Python,Django,Django Signals,实际上,我有一个独立的脚本,它从外部源获取数据并将其转储到django通道层。启动时,脚本查询数据库中的所有Product对象,这会告诉它需要加入哪些数据源。我试图实现一个信号,当保存一个新的产品实例时,它会告诉脚本,这样它就可以加入可能需要的任何其他源。 我正在使用以下代码: from django.db.models.signals import post_save from django.dispatch import receiver from home.models import P
Product
对象,这会告诉它需要加入哪些数据源。我试图实现一个信号,当保存一个新的产品
实例时,它会告诉脚本,这样它就可以加入可能需要的任何其他源。
我正在使用以下代码:
from django.db.models.signals import post_save
from django.dispatch import receiver
from home.models import Product
@receiver(post_save, sender=Product)
def test(sender, **kwargs):
print("SUCESS------------------------------------------------------{}".format(sender))
此脚本位于
f/data\u sources/management/commands/source.py
中,产品模型位于home/models.y
中。显然,我需要以某种方式导入source.py中定义的“test”函数,但我不确定如何导入。这是一个巨大的脚本,我需要导入整个脚本吗?我甚至不确定导入命令是什么。只有在产品由独立脚本保存时,使用信号才能起作用。如果产品是通过另一个过程(例如通过网页)保存的,则它将不起作用。我认为最好是更新,而不是将信息分成两个问题。对,有什么办法可以解决这个问题吗?我已经删除了老问题,因为它包含了所有相同的信息,而且产品模型定义了数据源的名称(实际上是pubnub频道)。此脚本从每个产品实例读取pubnub频道的名称,并在pubnub上订阅该频道。然后,它将数据推送到django通道层。问题是,如果创建了一个新产品,脚本就不知道如何更新其订阅列表。我想可能会用一个信号告诉它‘产品x是用pubnub频道y创建的’,然后它会做出适当的反应。