捕获从芹菜任务发送的django信号。可能吗?据我所知,它们正在不同的进程中运行
@celery.task
def my_task():
...
custom_signal.send()
@receiver(custom_signal)
def my_signal_handler():
...
答案 0 :(得分:0)
请记住,您的异步任务必须是@shared_task装饰器。以便从外部调用,因为它不会附加到具体的应用实例。 Documentation @shared_task celery
task.py
@shared_task
def send_email(email):
# Do logic for sending email or other task
signal.py
正如您在下面看到的那样,这仅在模型Contract的post_save(在用户执行保存后)时执行(在您的情况下,合同将是正在执行的任何其他模型)。
@receiver(post_save, sender=Contract)
def inflation_signal(sender, **kwargs):
if kwargs['created']:
send_email.delay('mymail@example.com')