3

私は Django を使用しており、Web ユーザー インターフェイスを介してやり取りしている長時間実行されるプロセスをいくつか作成しています。たとえば、それらは常に実行され、数分ごとにデータベースの値をチェックし、これが変更された場合にのみ停止します (ブール値 true false になります)。したがって、Django を使用してこれらと対話できるようにしたいのですが、これを行う方法がわかりません。PHPを使用していたとき、これを行う方法がいくつかありました.Pythonで行う方がさらに簡単だと思いますが、検索でこれについて何も見つけることができません.

基本的に、私ができるようにしたいのは、Pythonコードが終了するのを待たずに実行することだけなので、実行を開始してから、djangoに必要な他のことを実行し、新しいページをすばやくユーザーに返します。

外部プログラムを呼び出す方法があることは知っているので、それが唯一の方法だと思いますか? 他のpythonコードを呼び出すだけでこれを行う方法はありますか?

アドバイスをありがとう。

4

2 に答える 2

6

まだ使っていないので保証はできませんが、「Celery」はあなたが求めていることのほとんどを実行し、元々 Django 用に特別に構築されました。

http://celeryproject.org/

2 つの数値を追加する単純なタスクを示す彼らの例:

from celery.decorators import task

@task
def add(x, y):
    return x + y

バックグラウンドでタスクを実行するか、終了するまで待つことができます。

>>> result = add.delay(8, 8)
>>> result.wait() # wait for and return the result
16

おそらくRabbitMQもインストールして機能させる必要があるため、探しているよりも複雑なソリューションになる可能性がありますが、目標を達成できます.

于 2010-09-27T18:17:35.140 に答える
0

非同期メッセージ マネージャーが必要です。Gearman と Django の統合に関するチュートリアルがあります。pickle 化可能な Python オブジェクトはすべて Gearman に送信できます。Gearman がすべての作業を行い、必要な場所に結果を投稿します。このチュートリアルには、Django データベースにポストバックする例が含まれています (Django の外部で ORM を使用する方法も示しています)。

于 2010-09-29T16:56:56.247 に答える