2013-01-08 77 views
1

好的,所以我目前正在使用python腳本一次將多個文件上傳到給定的服務器。避免子進程超時

我正在運行python 2.7.3版本。但是,我收到錯誤消息,因爲發生套接字超時或某事(當我只使用ftp控制檯命令時不會發生這種情況)。

看起來子進程看起來有些不同嗎?我甚至不關心監控它;事實上,如果我的服務器連接與之混淆,我寧願該進程不終止。任何報道都是肉汁。

錯誤消息:

File "/usr/bin/jat", line 301, in ftp_upload 
    pool.map(upload,files_to_upload) 
    File "/usr/lib/python2.7/multiprocessing/pool.py", line 227, in map 
    return self.map_async(func, iterable, chunksize).get() 
    File "/usr/lib/python2.7/multiprocessing/pool.py", line 528, in get 
    raise self._value 
socket.timeout: timed out 
+0

你使用什麼Python版本? – Kiwisauce

+0

對不起,不記得把它放在原來的帖子。 2.7.3 –

+1

請發佈精確的錯誤消息,而不是'或什麼的'。謝謝! – phihag

回答

0

pool.Map()從傳播它管理到主過程的子過程的異常。請注意,正在從multiprocessing/pool.py報告異常,並且回溯以「raise self._value」結束。

該行表示在其中一個子進程中引發了socket.timeout。我懷疑這是你的ftp.login,超時。根據the ftplib documentation,如果在創建對象時沒有指定全局缺省超時,則FTP對象將使用全局缺省超時。

在附註中,我建議使用this question的回答者建議的方法之一,在子過程中發生異常時將更多細節傳遞迴主線程。