15

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

これは機能しますが、間違いなくハッキーな感じがします。タイマーで短期間のバックグラウンドタスクを管理するために、django-celery+rabbitmqよりも軽量なものがあるかどうか疑問に思いました。Web / Djangoの性質はステートレスであることに気づきましたが、状態遷移をより信頼性の高い方法で管理するための簡単な提案があるかどうかを確認したかっただけです。

4

3 に答える 3

20

ここでdjango-utilsの作者、新しいプロジェクトHueyを試してみることをお勧めします-より豊富な機能セット、より優れたドキュメント、より安定した、あらゆるPythonフレームワーク(djangoを含む)で動作します。 ドキュメント

于 2012-07-13T18:37:27.343 に答える
7

私は、より軽量なCeleryの代替手段を1つだけ知っています。それは、django-utilsのキューです。

別の方法は、サブプロセスモジュールを直接使用することですが、 Celerydjango-utilsですでに解決されているいくつかの問題を解決する必要があります。

于 2012-01-04T17:55:06.470 に答える
5

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

于 2015-11-06T22:05:39.000 に答える