0

私は非常に単純な Web アプリケーションを持っています。生徒が入ってきて、教科の 1 つでメモを作成します。各サブジェクトには、サブスクライバーの数があります。stackoverflow タグと同様に、タグが質問に追加されると、サブスクライバーに通知されます。

私のアプリでも同様に、サブスクライバーを追加したいので、特定の件名のメモが作成されると、その件名のすべてのサブスクライバーにメールが送信されます。

私は次のように私のdbモデルを持っています -

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 に答える