Skip to main content
 首页 » 编程设计

python之Django 信号与 Python 线程

2025年05月04日22lhb25

很难解释我想要实现的目标。请耐心看完这个。如果您有任何问题,请告诉我。

假设我有一个包含两个应用程序的 Django 项目,我想让它们松耦合。其中一个应用程序是“工作”,另一个是“通知”。

现在我想在 Job 实例更新时创建通知。所以,我在考虑使用 Django Signals。但我的一些保留意见是:

  1. 如果我使用像 post_save 这样的内置信号。我可以验证作业实例的条件并生成通知(这很好)。但是问题来了,在同一个 View 逻辑中,我多次调用作业实例上的保存方法。这会多次生成通知。否则,我会使用自制信号,我需要手动调用它,这不利于松散耦合。
  2. 此外,信号不是异步的,因此我必须等待通知生成完成才能继续。

任何人都可以建议使用信号的良好实现策略。我正在研究的一种解决方案是 Python 线程,它似乎可以解决异步问题。但是使用线程还有其他后果吗?

请您参考如下方法:

我建议您将 django-celery 与 RabbitMQ 一起使用。您可以在 celery 的任务中添加通知,并让您的 View 启动任务队列。看一看....希望对您有所帮助。