在win32上使用python2.7的httplib进行慢速http上载

2024-10-04 03:25:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python和httplib为我的文件共享服务器实现了一个非常简单的文件上传程序。如果文件大于1MB,则文件将被分块并一次上载一个块。我的客户机和服务器之间的网络连接非常好(100mbps,<;3ms延迟)。在

当块大小很小(低于128kB左右)时,一切正常(大于200kB/s)。但是,当我将块大小增加到256kB或更大时,完成一个块所需的时间比128kB的分块(20kB/s)要多10倍。更奇怪的是,这种情况只发生在我的win32机器(win8x86,运行32b python)中,而不是在amd64机器上(win8amd64,运行64b python)。在

经过一些改进,我将搜索范围缩小到的request()和getresponse()函数httplib.HttpConnection,因为这些是阻塞的原因。在

我的第一个猜测是关于套接字缓冲。但是改变sosndbuf和TCP_NODELAY选项并没有多大帮助。我也检查过我的服务器端,但一切正常。在

我真的希望有人能帮我。更改http库(改为pycurl)是我最不想做的事情。提前谢谢!在


Tags: 文件lt程序服务器机器客户机时间情况
1条回答
网友
1楼 · 发布于 2024-10-04 03:25:31

原来这是一个与虚拟机相关的问题。我在一个虚拟机上运行Python代码,但是当我把同样的代码复制到运行同一个Windows版本的物理机器上时,问题就消失了。在

由于我对虚拟机机制完全不熟悉,如果有人能解释为什么虚拟机中存在这样的问题,那就太好了。在

相关问题 更多 >