我正在尝试自动化一个进程,通过该进程在指定的IP和端口使用wget拦截比特流。以前,为了做到这一点,我会运行
$ wget "http://<IP>:<Port>/audio_tap?tap=codecout" -O <filename>
一直很好。然后我使用Python自动完成整个过程,在这种情况下,通过一组文件队列下载,然后从相同的IP和端口依次下载。
在Python中自动执行该过程后,为了维护时序,此过程在子进程中使用subprocess.Popen执行,而其他操作则控制比特流朝向该IP和端口。
在进行循环以拉入多个文件后,在每次迭代后结束子进程并在开始时重新启动它,所有操作都完美无缺,除了比特流在完全失败之前将保存几百KB。在第二次下载后,每个后续下载都会持续存在此问题。
代码大致如下:
def foo(arg):
def startstream(____):
stream.start()
time.sleep(length)
stream.end()
sim = multiprocessing.Process(target=startstream, name='sim', args=(____))
sim.start()
wgetargs = 'wget "http://%s:1400/audio_tap?tap=codecout" -O "%s"'%(IP,filename)
SubCapture = subprocess.Popen(shlex.split(wgetargs), stdout=subprocess.PIPE, shell=True)
SubCapturePID = SubCapture.pid
while sim.is_alive():
pass
os.system('kill %d' %(SubCapturePID))
for i in aList:
foo(i)
最后,错误是这些的一些组合: 开始流
--Date Time-- http://<IP>:<Port>/audio_tap?tap=codecout
Connecting to <IP>:<Port>... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified
Saving to: ‘filename_0’
file_0 [ <=> ] 12.82M 172KB/s
beginning stream
--Date Time-- http://<IP>:<Port>/audio_tap?tap=codecout
Connecting to <IP>:<Port>... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified
Saving to: ‘filename_1’
file_1 [ <=> ] 278.75K --.-KB/s
beginning stream
--Date Time-- http://<IP>:<Port>/audio_tap?tap=codecout
Connecting to <IP>:<Port>... connected.
HTTP request sent, awaiting response... ending
感谢您提供的任何帮助或任何见解。
MacOS 10.12.5 Python 2.7.13 GNU wget 1.19.1建立在darwin 16.4.0
上