1

CouchDBと通信するIronPythonスクリプトを実行したいRESTfulC#Webサービス(Open Rastaを使用)があります。

いくつかの説明を使用できることの1つは、Pythonエンジンとスコープの新しいインスタンスが必要になる頻度はどれくらいかということです。アプリケーションごとに1つ?セッションごと?リクエストごと?

私は現在、コンパイルされたスクリプトの辞書とともに、アプリケーションレベルの静的エンジンを持っています。次に、リクエストごとに、新しいスコープを作成し、そのスコープ内でコードを実行します...

あれは正しいですか?スレッドセーフ?そしてそれができる限りのパフォーマンス?

編集:報奨金についてジェフに答えて私が提起した質問にも答えてください:エンジンの静的インスタンスにより、さまざまなクライアントからのシーケンシャルリクエストが順番に実行されるのを待ちますか?もしそうなら、私はおそらくリクエストごとにすべてが必要になります。

4

2 に答える 2

3

アプリケーションごとの ScriptRuntime/ScriptEngine とリクエストごとの Scope は、まさにそれが行われるべき方法です。ランタイム/エンジンはスレッドセーフですが、スコープはそうではありません。

于 2011-02-04T23:04:20.417 に答える
2

すべてのコードがスレッドセーフでない限り、リクエストごとに行う方法です。アプリケーションごとに使用するとパフォーマンスが向上する場合があります (セッションごととは、クライアントとサーバーの間に「セッション」という概念があることを意味します) が、「アプリケーション」内のすべてのコードがスレッドセーフであることを意味します。

したがって、コードがスレッドセーフであることがわかっていない限り、リクエストごとに使用する必要があります。

次の場合にのみ、アプリケーションごとの速度が向上することにも注意してください。

  1. 物事をスレッドセーフにするために、スレッドをブロックしていません。
  2. ビジネス層/データ層が非常に「重い」(インスタンス化に時間がかかる) 場合、ある程度のパフォーマンス上の利点が得られる可能性があります。
于 2011-02-04T22:37:59.157 に答える