1

ユーザーが画像にコメントを追加すると、画像
の作成者を含む一部のユーザーにプッシュ通知で通知されます。

通常のビューで動作させました。
現在、tastypie フレームワークを採用し、このビューを変換しています。

class CommentResource(ModelResource):

..
   def obj_create(....):
        #send notifications
        #actually create the comment object

API を使用するのは奇妙に感じるsending notificationsので、これが良い方法かどうか尋ねています。

4

1 に答える 1

1

これは機能しますが、最適ではない可能性があることは正しいです。おそらく、シグナルを使用して API と通知を切り離す方がよいでしょう (シグナルに関する Django ドキュメントはこちら) 。

主な利点は、API コードから通知コードを切り離すことです。シグナル リスナーは、誰が、どのように、どこでコメントを作成したかには関係なく、コメントが作成されたという事実に基づいて動作します。同じことが API (シグナル送信者) にも当てはまります。これにより、API を変更せずに通知コードを変更でき、その逆も可能です。もちろん、そのようにしてコードもよりシンプルでクリーンになります。たとえば、コメントでさらにいくつかのことを行うことにした場合、API 自体に関係のない機能を追加して API コードを肥大化させるのではなく、リスナーを追加するだけで済みます。そして維持が難しくなります。

このすべてをさらに一歩進めて、非同期バージョンを開発することができます (Django シグナルは同期的です。つまり、シグナルを送信すると、シグナル リスナーが完了するまで処理がブロックされます)。シグナルを送信した後、API リクエスト処理コードは通知が送信されるのを待たずに終了できるため、これも非常に便利です。これにより、消費者の観点から API の応答が速くなります。これは、スレッド、Celery、または Greenlet/Gevent を使用して、さまざまな方法で行うことができます。興味がある場合は、google をお勧めします。

非同期が実際に適しているかどうかは、正確な要件によって異なります。つまり、API 応答が遅くなるとしても、通知が非常に重要である可能性があるため、シグナルを同期的に送信することに実際に関心がある場合があります。

これでうまくいくことを願っています:)頑張ってください!

于 2013-03-17T02:37:40.530 に答える