我刚刚发现了'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