2

很难解释我想要达到的目标。请耐心等待。如果您有任何问题,请告诉我。

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

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

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

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

4

1 回答 1

1

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

于 2012-12-15T12:15:43.487 回答