0

一定の間隔で実行する必要がある多段階プロセスがあります。また、適切なタイミングでプロセスを開始し、プロセスの段階を連鎖させ、各段階が正しく実行されたことを確認するコントローラー プログラムもあります。コントローラは、プロセスの過去の実行に関する情報、プロセスの将来の実行のためのパラメータなどを保存するデータベースにアクセスします。

ここで、Pyramid を使用して Controller への Web インターフェイスを構築し、プロセスに関する情報を表示して Controller の操作に影響を与えることができるようにします。これは、Web インターフェイスでのアクションがコントローラ データベースの変更に影響を与える必要があることを意味します。当然のことながら、Web インターフェイスはコントローラーとまったく同じデータ モデルを使用します。

コントローラーと Web サーバーが対話するための最良の方法は何ですか? 私は2つの可能性を考えました:

  • Pyramid の初期化ルーチンで sched を呼び出して、コントローラーと Web サーバーを結合します。
  • Pyro などを使用して、Web サーバーにコントローラーへの RPC を作成させます。

ここはどうすればいいですか?また、2 番目のオプションを使用するときに (データ モデルの) コードの重複を避けるにはどうすればよいでしょうか?

4

1 に答える 1

0

Webアプリケーションと同じプロセスでコントローラーを実行することは避けます。たとえば、権限を下げてWebアプリケーションを実行するのが一般的な方法です。マルチスレッド/マルチプロセス環境では、複数のワーカーを生成し、必要に応じてそれらを強制終了/リサイクルする可能性があります。したがって、ある種のRPCメカニズムを使用して別のプロセスでコントローラーを実行することは、はるかに優れたアイデアのように思われます。

コードの重複に関して-2つのオプションがあります:

  • 共通のコード(モデル)を、両方のアプリケーションで使用される個別のモジュール/卵に抽出できます

  • 多くのコードを共有する必要があることに気付いた場合、それらのアプリケーション用に個別のプロジェクトを用意する必要はありません。2つ以上の「エントリポイント」を持つ単一のコードベースを持つことができます。そのうちの1つはPyramidWSGIアプリケーションを開始し、もう1つはコントローラープロセスを開始します。

于 2012-04-26T05:21:10.573 に答える