【发布时间】:2016-06-23 15:01:48
【问题描述】:
我正在使用脚本从 ftp 服务器检索数据。由于我想并行下载,ftp.retrbinary 在函数中被调用。
Atm 的工作代码如下所示:
from ftplib import FTP
def download_file(file_in, target_file):
ftp.retrbinary('RETR '+file_in, open(target_file, 'wb').write)
return 0
ftp = FTP(FTP_HOST)
ftp.login(FTP_USER, FTP_PASS)
ftp.cwd(FTP_PATH)
for file_input in files_to_check:
download_file(target_dir,file_input)
只要我想并行下载,下载就卡住了,没有数据传输:
from ftplib import FTP
from joblib import Parallel, delayed
def download_file(file_in, target_file):
ftp.retrbinary('RETR '+file_in, open(target_file, 'wb').write)
return 0
ftp = FTP(FTP_HOST)
ftp.login(FTP_USER, FTP_PASS)
ftp.cwd(FTP_PATH)
Parallel(n_jobs=2)(delayed(download_file)(target_dir,file_input) for file_input in files_to_check)
有人知道为什么ftp.retrbinary 不适用于并行下载吗?
【问题讨论】:
-
对我来说很好。你能提供完整的错误堆栈跟踪吗?
-
感谢您的回复!事实证明,并行化是问题所在。不幸的是,下载似乎没有开始,文件大小仍然为零。
标签: python python-2.7 ftp