Python中的Unix wget自动化在第二次调用期间失败

时间:2017-07-21 13:17:48

标签: python wget

我正在尝试自动化一个进程,通过该进程在指定的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

0 个答案:

没有答案