0

我有一个非常简单的网络应用程序。一个学生进来,他在其中一个科目上写了一个笔记。每个主题都有订阅者数量。与 stackoverflow 标签类似,一旦将标签添加到问题中,就会通知订阅者。

同样在我的应用程序中,我想添加订阅者,因此一旦为特定主题创建了注释,该主题的所有订阅者都会被邮寄。

我的数据库模型如下 -

class Subject(models.Model):
//some vlaues here 

class Note(models.Model):
    title = models.CharField(max_length=200)
    description = models.TextField()
    author = models.ForeignKey(User)
    subject = models.ForeignKey(Subject)

class SubscriptionModel(models.Model):
    subject = models.ForeignKey(Subject)
    subscriber = models.ForeignKey(User)

有几种实现它的方法 -

  1. 创建注释后,可以触发 post_save 信号以向该主题的所有订阅者发送电子邮件。

  2. 可以用 pub-sub 来做一些事情。

  3. 可以做一些带有 rss 提要的事情。

我不确定什么是实现它的可扩展方法,任何帮助或指针将不胜感激,谢谢。

4

1 回答 1

0

信号是同步的,所以在保存信号中完成邮件会很糟糕,因为它会减慢保存过程并且不会扩展。

我建议通过django-rqcelery等队列使用异步任务。你可以在 post_save 信号中将任务放入队列中。这种方法可以很好地扩展并且不会干扰正常的站点功能。

于 2013-05-08T14:30:27.073 回答