我刚刚发现了'envoy'模块,这是请求创建者创建的python子进程的包装。

我的“连接”功能有问题:每次使用它时,都会导致僵尸进程,并且无法获取status_code或结果。

c=envoy.connect("ls -al")
c.status_code == None
 True


如果执行“ ps -ef | grep thepid”,则会得到“已失效”的pid。

我可以通过执行os.wait()或c._process.wait()杀死僵尸,但无法获得命令的结果(stdout)...

任何想法?

最佳答案

在您的情况下,您应该使用run()方法

如特使文档所建议:

r = envoy.run(cmd)
print r.status_code, r.std_out


但是,如果您希望命令异步运行,则可以使用connect(),然后使用block()

调用block()后,返回码将变为可用。但是block()会阻塞您的程序,因此逻辑应该如此。

c1=envoy.connect(cmd1)
c2=envoy.connect(cmd2)
c3=envoy.connect(cmd3)
... more staff ...
c1.block()
print c1.status_code

10-08 04:06