1

Django アプリケーションに一種の「リアルタイム」通知システムを実装したいと考えています。

特定のユーザー宛てのメッセージをデータベースに保存します。ユーザーがアプリケーションにログインしているときに、データベースにそのユーザーへの通知がある場合、アプリケーションはメッセージ フレームワークを使用してそれを表示します。メッセージをクリックすると、データベースから削除されます。

「毎分データを取得する」ことに少しこだわっています。セロリ ( http://docs.celeryproject.org/en/latest/# )のことは聞いたことがありますが、セットアップと設定が少し複雑に思えるため、実際に使用する前にセロリが適切な方法であることを確認したいと思います。使用する。

django 関数をデーモン化する簡単な方法がある場合、または私がやりたいことに似たものが既に存在する場合は、ヒントをいただければ幸いです。

4

2 に答える 2

2

単純な作業であれば、Ajax を使用できます。

ajax クエリに対して 1 つの URL を宣言するだけです。

#urls.py

...
url(r'^ajax/my_query$', my_app.views.ajax_processor)
...

次に、あなたのmy_app/views.py

#views.py

def ajax_processor(request):

    ... do the processing you want as if it is a normal web request.
    ... like querying the database
    ... you can return a `json` dictionary 
    ... or a normal `render_to_response` template with html

それはサーバー側で行う必要があります。$.ajaxクライアント側では、関数でjQuery を使用して次のようにするとよいでしょう。

$.ajax({
    url:'/ajax/my_query',  // a normal get request
    success:function(data){  // success is the callback when the server responds
        /* if is json what you decided to return then process the json dict
           if is normal html render it wherver you want
        */
    }
});

セットアップは簡単で、サーバー側のコードとクライアント側のコードが少しあります。

高度にリアルタイムベースのアプリケーションを開発することを計画している場合は、より優れたライブラリに依存する必要がありますが、非同期クエリを少しだけ実行する必要がある場合は、この方法を検討できます。

これは、Ajaxを理解するのに役立つ、W3Schools が提供する優れたシンプルな ajax チュートリアルです。ここでは、ajax /jquery を使用したポーリングに関する有用な情報を見つけることができます。

幸運を!

于 2013-05-13T14:13:04.687 に答える
1

考慮すべきいくつかのオプションを次に示します。

  • セロリ。はい、セットアップはそれほど簡単ではありませんが、django-celeryを介して python/django 側から構成して使用するのは非常に簡単です。セロリの定期的なタスクも見てください。

  • rq (Redis キュー)。設定が簡単なシンプルなジョブ キュー。

  • ジャンゴクロノグラフ。管理コマンドから簡単に cron ジョブを作成して実行できます。

以下も参照してください。

于 2013-05-13T13:31:37.953 に答える