flask - python实行命令日志实时输出问题。
PHP中文网
PHP中文网 2017-04-17 17:51:48
0
2
551

我有一项目,项目中会调用一些系统命令,采用了os.popen方式
例如这样:

mylogger.info(os.popen('/usr/local/python27/bin/ansible -i %s selecthost -m ping' %hosttemp_file).read())

这种方式执行的话,会等待整条命令都执行完之后,通过read()方式把执行日志读取出来,所以想请教下,有什么方法可以实现python在执行的过程中,能把日志实时输出出来的,而不是要等到整条命令完成后才读出日志内容。

例如上面的命令,假设selecthost里的ip比较多,我就等比较长的时间才能看到结果,正常ansible执行的时候是执行一个ip打印出一条对应的日志信息的。

这里暂且不论是否使用ansible的api问题,只是举这个例子说明这问题。

PHP中文网
PHP中文网

认证高级PHP讲师

reply all(2)
伊谢尔伦

If you use ansible, you should consider using its API

test.py

import time
while True:
    print time.time()

from subprocess import Popen, PIPE, STDOUT
p = Popen('python test.py', stdout=PIPE, stderr=STDOUT, shell=True)#🎜🎜 #for l in p.stdout: print l.strip()

黄舟
from subprocess import Popen, PIPE, STDOUT

p = Popen('curl www.baidu.com', stdout=PIPE, stderr=STDOUT, shell=True)
for line in p.stdout:
    print line.replace('\n', '')
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!