0

mod_wsgi を介して Web サーバー上で Python アプリケーションを実行しており、サーバー上の SSH を介して Python シェルにアクセスできます。アプリケーションの一部は、アプリケーションの実行中にディクショナリと少数のリストをメモリ内に生成します。

サーバーでPythonシェルを起動し、シェルを介して辞書とリストにアクセスできる方法はありますか、またはそれらをピクルまたはjsonして定期的にまたはイベントトリガーによってファイルに保存するようにアプリケーションをプログラムする唯一のオプションです?

これが Web サーバーの状況に焦点を当てていなくても、Python シェルが既に実行中の Python アプリケーションにアクセスすることは可能ですか?

4

1 に答える 1

1

通常、あるPythonインタープリターに別のPythonインタープリターからアクセスすることはできません。

このようなことを行う最も一般的な方法は、ソケット上のインタープリター(またはパイプなど)をサーバープログラムに配置し、シェルをそのインタープリターに接続することです。

モジュール上でこれを行うのcodeは難しいことではありませんが、通常のインタラクティブインタプリタシェルと同じようにうまくいくには、もう少し手間がかかります。IDLEとIPythonの両方に、便利なソースコードがたくさん含まれていると思います。また、箱から出して、または最小限の変更で使用できるものも含まれている可能性があります。

2つの別々のプログラム間で直接データを共有することも可能です。たとえば、multiprocessing.Value上で使用しますmmap。または、より簡単に言えば、データをメモリではなくデータベースファイルに保持します。そうすれば、シェルはサーバーと直接対話することなくデータを読み取ることができます。ただし、これは、適切なロックを設定するか、可能な限りアトミックに書き込もうとして、人種のためにシェルがときどきガベージを取得することを受け入れることを意味します。

しかし、実際には、ほとんどの場合、ピクルス/ JSONなどでデータをダンプする余裕があれば、それが最も簡単で安全なソリューションです。

于 2013-02-20T01:12:20.577 に答える