0

サーバーでユーザー入力のPythonコードを実行する必要があるWebサービスに取り組んでいます(コードインジェクションのチェックがあります)。かなり大きなモジュールをインポートする必要があるので、Pythonを起動して、何かが実行されるたびにモジュールを最初からインポートしないようにします(約4〜6秒かかります)。

これを行うために、ユーザー入力コードをモジュールとしてインポートし、それを実行してから、そのモジュールを削除/ガベージコレクションするpython(3.2)デーモンを作成することを計画していました。このプロセスはサーバーが再起動されるまで続くため、そのモジュールがRAMから完全に削除されていることを確認する必要があります。私はこれがPythonで行うのは非常に難しいことだと言うたくさんのことを読みました。

これを行うための最良の方法は何ですか?execを使用してユーザー入力コード(変数スコープ用)で関数を定義してから、その関数を実行して、何らかの方法で関数を削除する方がよいでしょうか?それとも、私が見逃したこのプロセスを実行するためのより良い方法はありますか?

4

1 に答える 1

0

Pythonデーモンプロセスのプールを作成することを検討できますか?

彼らの目的は、1つの要求に応え、その後死ぬことです。

着信要求を待機しているXデーモンプロセスが常に存在することを保証するプールマネージャーを作成する必要があります。(Xは待機中のデーモンプロセスの数です:必要なワークロードによって異なります)。pool-managerは、デーモンプロセスのプールを監視し、プロセスが終了するたびに新しいインスタンスを開始する必要があります。

于 2012-07-23T13:58:09.663 に答える