Pythonコンソールでは、次のステートメントは完全に正常に機能します(evalをそのように使用することはあまり適切ではないと思いますが、この場合はテスト目的であり、適切な解析に置き換えられます)
$ python
>>> import subprocess
>>> r = subprocess.Popen(['/pathto/plugin1.rb'], stdout=subprocess.PIPE, close_fds=True).communicate()[0]
>>> data = eval(r)
>>> data
{'test': 1}
これをServerdensityプラグインに変換すると、プラグインを実行するたびにagent.pyデーモンがクラッシュし続けます。サブプロセスラインに絞り込むことはできましたが、理由がわかりませんでした。例外キャッチも機能していないようです。
プラグインは次のようになります。
class plugin1:
def run(self):
r = subprocess.Popen(['/pathto/plugin1.rb'], stdout=subprocess.PIPE, close_fds=True).communicate()[0]
data = eval(r)
return data
私はPythonを使用するのはまったく新しいので、なぜこれが機能しないのか本当に理解できません。アイデアをどうもありがとう:)