Python S3上传与pycurl中断

Python S3上传与pycurl中断,python,curl,tcp,upload,amazon-s3,Python,Curl,Tcp,Upload,Amazon S3,我使用pycurl作为botoPython库的后端。这是非常快速和多功能,但我有一个问题,上传大文件往往失败连接重置。当我将plainboto与plainhttplib一起使用时,它更加可靠 我在使用Wireshark时发现,过了一段时间(有时甚至很快),我的机器停止接收来自S3的ACK,因此它重置了连接。几乎可以看出,pycurl的速度太快,以至于阻塞了连接。如果我限制上传(我使用多接口)或使用较慢的互联网连接,上传运行正常 我还在想我可能做错了什么 我还尝试使用.NETS3SDK上传。速度大

我使用pycurl作为
boto
Python库的后端。这是非常快速和多功能,但我有一个问题,上传大文件往往失败连接重置。当我将plain
boto
与plain
httplib
一起使用时,它更加可靠

我在使用Wireshark时发现,过了一段时间(有时甚至很快),我的机器停止接收来自S3的ACK,因此它重置了连接。几乎可以看出,
pycurl
的速度太快,以至于阻塞了连接。如果我限制上传(我使用多接口)或使用较慢的互联网连接,上传运行正常

我还在想我可能做错了什么


我还尝试使用.NETS3SDK上传。速度大约慢3倍,但成功了。另外,这都是在Windows 7上进行的,同一网络上的OS X计算机再次上传速度要慢得多,但可靠。

既然您提到您在Windows 7上遇到问题,您能否以管理员身份运行命令提示符并发布
netsh int tcp show global
的结果?您应该看到如下内容:

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : normal
Add-On Congestion Control Provider  : none
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled
我建议您将结果复制/粘贴到.txt文件中,以记录当前设置。您感兴趣的设置有烟囱卸载、接收端缩放(RSS)和NetDMA。这些都是试图从NIC或CPU卸载处理的功能,它们有时会导致出现与您描述的症状类似的问题

在使用RSS或NetDMA之前,我会尝试通过运行
netsh int tcp set global烟囱=disabled
并在
Device Manager>Network Adapters>Advanced选项卡下禁用tcp卸载来禁用烟囱卸载


如果这不能解决您的问题,您可能需要尝试其他两个选项。下面是一个示例,详细介绍了如何修改所有这些功能。

听起来Windows中的NIC驱动程序好像被阻塞了。我在其他应用程序中也看到过这种行为。坊间证据表明,关闭驱动程序中的各种TCP卸载选项可能会有所帮助。谢谢,这看起来很有趣,但不幸的是,我现在无法验证,因为我的工作场所发生了变化,上传总是运行得很慢但很稳定。但我仍然想知道如何在我的软件中缓解这个问题。。。