我目前通过python manage.py dynamic_pricing_adjustment
创建了一个每六个小时调用一次的定期cron作业。如预期的那样,我的控制台将打印DO STUFF
。
我的 AppConfig 。
from django.apps import AppConfig
class PricingConfig(AppConfig):
name = 'myproject.pricing'
它在Django documentation中说,我应该将其添加到ready函数中。它似乎没有工作。您能告诉我那部分是什么意思还是为什么我应该添加它?
def ready(self):
from . import signals # noqa
这是我其余的代码:
dynamic_pricing_adjustment.py
from django.core.management.base import BaseCommand
from myproject.pricing.signals import dynamic_pricing
class Command(BaseCommand):
help = "Adjust prices for dynamic pricing"
def handle(self, *args, **options):
dynamic_pricing.send(self)
signals.py
from django.dispatch import Signal, receiver
dynamic_pricing = Signal()
@receiver(signal=dynamic_pricing)
def adjust_prices(sender, **kwargs):
print("DO STUFF")
答案 0 :(得分:0)
通常,信号用于模型调用的预定义信号(在保存,删除等之前/之后)或请求(请求开始/完成)。 Django需要知道您的接收器功能所在的位置并进行注册。这就是为什么您将它们导入AppConfig.ready()
中的原因。否则它们将不会被运行。
在您的情况下,您定义了自定义信号并直接调用了。在此示例中,信号没有意义。