很难解释我想要实现的目标。请耐心看完这个。如果您有任何问题,请告诉我。
假设我有一个包含两个应用程序的 Django 项目,我想让它们松耦合。其中一个应用程序是“工作”,另一个是“通知”。
现在我想在 Job 实例更新时创建通知。所以,我在考虑使用 Django Signals。但我的一些保留意见是:
- 如果我使用像 post_save 这样的内置信号。我可以验证作业实例的条件并生成通知(这很好)。但是问题来了,在同一个 View 逻辑中,我多次调用作业实例上的保存方法。这会多次生成通知。否则,我会使用自制信号,我需要手动调用它,这不利于松散耦合。
- 此外,信号不是异步的,因此我必须等待通知生成完成才能继续。
任何人都可以建议使用信号的良好实现策略。我正在研究的一种解决方案是 Python 线程,它似乎可以解决异步问题。但是使用线程还有其他后果吗?
最佳答案
我建议您将 django-celery 与 RabbitMQ 一起使用。您可以在 celery 的任务中添加通知,并让您的 View 启动任务队列。看一看....希望对您有所帮助。
关于python - Django 信号与 Python 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13870894/