【发布时间】:2015-08-06 09:30:25
【问题描述】:
import ftplib
import csv
import StringIO
sio = StringIO.StringIO()
data = csv.writer(sio)
data.writerows(data_to_export)
sio.seek(0)
ftps.storbinary("STOR " + 'blah.csv', sio)
ftps.close()
所以我创建的文件只有 56 行,创建速度非常慢。当它完成创建时,我得到这个错误:
ftps.storbinary("STOR " + 'blah.csv', sio)
File "/usr/lib/python2.7/ftplib.py", line 752, in storbinary
conn.unwrap()
File "/usr/lib/python2.7/ssl.py", line 384, in unwrap
s = self._sslobj.shutdown()
SSLError: The read operation timed out
我不明白为什么它这么慢以及为什么它会超时,即使它创建了那个文件。
P.S.请询问我是否需要提供其他信息
更新
我也试过cString,但它并没有改善任何东西,因为我猜它与写入速度无关。
如果有任何区别,则使用隐式 SSL/TLS 模式连接到 ftp(即 ftp 不支持显式 SSL/TLS)。
更新 深层发掘。这就是 ftp 的调试显示:
*cmd* 'TYPE I'
*resp* '200 Binary mode selected.'
*cmd* 'PASV'
*resp* '227 Entering Passive Mode (*,*,*,*,*,*)'
*cmd* 'STOR blah.csv'
*resp* '125 Secure data connection open; transfer starting.'
然后卡在最后一个输出,直到我连接超时。
注意。我的互联网连接很好,但是 ftp 有点慢。不过我想这么小的文件应该比这处理得快得多。
更新2 那是一些奇怪的ftp。尝试不安全的 ftp 连接,文件上传正确且快速。这种隐式连接与这种缓慢的性能和超时有关。
【问题讨论】:
标签: python file ftp timeout ftplib