2012-01-04 52 views
11

私は、2人のユーザー間でモデレートされたチャットセッションの状態を保持するDjangoサイトのごく一部です。基本的に、第1のユーザは3分間話し(他の誰もが話すことはできない)、次に第2のユーザが話し、次に30秒の休止をし、プロセスをもう一度繰り返す。私は現在、データベースと "RoomState"モデルを使用して、部屋の現在の状態(話すことができる人など)を管理しています。状態の遷移は、クライアントが状態を変更する時間であるかどうかをチェックする、自分のビューの1つに10秒ごとに「ping」AJAX POSTメッセージを送信することによって影響されます。セロリなしのDjangoでのバックグラウンド処理

これは動作しますが、間違いなくハッキリに感じます。私は、タイマーで短命のバックグラウンドタスクを管理するために、django-celery + rabbitmqより軽いものがあるのだろうかと思っていました。私はWeb/Djangoの性質がステートレスであることを認識していますが、ステート遷移をより信頼性の高い方法で管理するための簡単な提案があれば見たいだけでした。

+1

rabbitmqが重量すぎる場合は、代わりにRedisバックエンドの使用を検討してください。 –

+0

選択した回答を更新することを検討してください。 – coleifer

+0

DjangoまたはCeleryの2つのブレークポイントのいずれかをアップグレードする必要があるたびに、私はOPに完全に同意します。私たちは現在、頭痛のためにウェブをスキャンしています。セロリにはgit hubに496の顕著な問題があり、決して引っ張られることのない37回のプルリクエストがあります。セロリではありませんでした。開発者は時間を無駄にして別のバックエンドを統合することはありません。 –

答えて

14

ここでは、私の新しいプロジェクトを試してみることをお勧めしますHuey - より豊かな機能セット、より良いドキュメント、より安定した、任意のPythonフレームワーク(djangoを含む)で動作します。 Docs

7

セロリの代替手段は1つだけわかりますが、これは軽量です:Queue in django-utilsです。

もう一つの方法は、直接subprocessモジュールを使用することですが、あなたはおそらくすでにセロリジャンゴ-utilsの中で解決されるいくつかの問題を解決する必要があります。

+1

代わりにhttps://github.com/coleifer/hueyを使いたいのですが、私はもはやdjango-utilsを維持していません – coleifer

+0

おそらく[Django Q](https://github.com/Koed00/django -q /)これはdjango固有であり、著者の記載された目標はまさにあなたが求めているものです。参考:私は所属はなく、著者は知らない。 – eskhool

4

django-background-tasksをお勧めします。私はいくつかのプロジェクトでそれを使用しており、それは単純なタスクランナーとして本当にうまくいきます。 Two-Scoops of Djangoでもお勧めです。

関連する問題