
[英]pycharm and subprocess - what works in console doesn't work in Pycharm
[英]Subprocess statement works in python console but not work in Serverdensity plugin?
在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的新手,无法真正弄清楚为什么它不起作用。 非常感谢您的想法:)
您是否在模块中导入了子流程? 另外,您遇到什么错误,可以发布错误消息吗?
切换好我的开发箱后(也许是因为不同的python版本?),我终于能够得到一些正确的错误输出。
然后这很简单:我真的只需要导入丢失的子流程模块。
对于谁对解决方案感兴趣:
http://github.com/maxigs/Serverdensity-Wrapper-Plugin/blob/master/ruby_plugin.py
尚未完成生产准备,但已经可以保存输入
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.