2011-02-07 3 views
3

httpで長時間実行するプロセス(30分)を開始し、実行中のステータスを取得する必要があります。 "プロセス"は基本的にデータベースを更新するPythonスクリプトです。私は以下の制約を持っています:WSGIアプリケーションからサーバー上で長時間実行されるプロセスを開始する

  1. 一度に1つのプロセスインスタンスしか実行できません。

  2. WSGIアプリケーションはいくつかのインタープリタで実行されているため、グローバル変数isRunningを作成して追跡することはできません。

  3. 私は

  4. んジャンゴ、ただ純粋なWSGIプロセス(ステータス/進捗状況)を追跡するためのWebページを必要としています。

誰でも同じことをしている経験はありますか?

+0

#1と#2が互いに矛盾しない方法を明確にすることはできますか? – carl

+0

"プロセス"またはジョブは、WSGIアプリケーションとは完全に別です。 WSGIアプリケーションは、modwsgiおよびWSGIDaemonProcessプロセス= 4を使用して4つのプロセス/インタープリタで実行され、堅牢性/速度を実現します。 – kalithlev

答えて

2

プロセスを別個のデーモンとして分離し、MQまたは他のIPCを使用してジョブを渡します。進行中のデータベース内の値を更新し、その値をWebページで読み取ります。

+0

プロセスはログを吐き出し、ファイルに保存してWebページから読み込むことができます。私はどのようにデーモンとしてPythonスクリプトを使用するのですか? – kalithlev

+0

"daemonize.py"を探します。 –

1

Celery(http://celeryproject.org/)を使って、Python Webアプリケーションプロセスの外でタスクを実行してください。

関連する問題