2012-04-25 14 views
0

私は多段階のプロセスをいくつかの間隔で実行する必要があります。 私はまた、プロセスを適切なタイミングで開始し、プロセスの段階を連鎖させ、各段階が正しく実行されたことをチェックするコントローラプログラムを持っています。 コントローラは、過去のプロセス実行に関する情報、プロセスの将来の実行のためのパラメータなどを格納するデータベースにアクセスします。PythonのコントローラプロセスへのWebインターフェイスの作成

ここで、私はPyramidを使用してコントローラとのWebインターフェイスを構築したいと思います。プロセスに関する情報を表示し、コントローラの動作に影響を与えます。 これは、Webインターフェイスのアクションがコントローラデータベースの変更に影響する必要があることを意味します。 もちろん、Webインターフェイスはコントローラとまったく同じデータモデルを使用します。

コントローラーとWebサーバーが対話する最良の方法は何ですか?私は二つの可能性と考えられてきた :ピラミッドの初期化ルーチン

  • にschedの呼び出しによって、コントローラとWebサーバーを組み合わせ

    • は、Webサーバーを持って、例えば、コントローラにRPCを作りますPyroを使って

    ここではどのように進む必要がありますか?そして、2番目のオプションを使用すると、(データモデルの)コードの重複を避けることができますか?

  • 答えて

    0

    Webアプリケーションと同じプロセスでコントローラを実行することは避けます。たとえば、アクセス許可を低くしてWebアプリケーションを実行するのが一般的です。いくつかのマルチスレッド/マルチプロセス環境では、複数のワーカーを起動させ、そのように感じるたびにそれらをkill/recycleする可能性があります。だから、あなたのコントローラを別のプロセスで実行して、何らかのRPCメカニズムを使用する方がはるかに良いアイデアのように思えます。コードの重複について

    から2つのオプションがあります:

    • はあなたがしている場合、両方のアプリケーション

    • で使用される独立したモジュール/卵の中に共通のコード(モデル)を抽出することができます多くのコードを共有する必要があることがわかります。これらのアプリケーションを別々のプロジェクトにする必要はありません。 2つ以上の「エントリポイント」を持つ単一のコードベースを持つことができます。そのうちの1つはPyramid WSGIアプリケーションを開始し、もう1つはコントローラプロセスを開始します。

    +0

    Sergeyさん、ありがとうございます。 – mskel

    関連する問題