在 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 很陌生,并且无法真正弄清楚为什么这不起作用。非常感谢您的想法:)