如何忽略服务器响应以节省带宽?

时间:2011-02-19 06:20:40

标签: python response

我正在使用服务器每秒向另一台服务器发送一些信息。问题是其他服务器响应是几千字节,这消耗了第一台服务器上的带宽(一小时约2 GB)。我想发送请求并忽略返回(甚至不接收它以节省带宽)..
我使用(urllib)为这个任务使用一个小的python脚本。我不介意使用任何其他工具甚至任何其他语言,如果这只是请求。

3 个答案:

答案 0 :(得分:3)

5K回复很小,可能低于操作系统的标准TCP窗口大小。这意味着即使您在发送请求后仅关闭网络连接并仅检查回复的第一个字节(以确保已真正收到请求),服务器可能已经向您发送了完整的答案并且数据包已经在电线上或电脑上。

如果你无法控制(即减少)你的通知的服务器回复是什么,我能想到的唯一选择是在远程机器上添加另一台服务器,等待一个简单的命令并在本地执行真正的请求而只是发送回复你的结果代码。这可以很容易地完成,甚至可以使用bash / perl / python在本地使用netcat / wget。

顺便说一句,格伦·梅纳德在评论中正确写道,你的数学中有些奇怪。

答案 1 :(得分:2)

对于HTTP,您可以发送HEAD请求而不是GET或POST:

import urllib2

request = urllib2.Request('https://stackoverflow.com/q/5049244/')
request.get_method = lambda: 'HEAD' # override get_method
response = urllib2.urlopen(request) # make request
print response.code, response.url

输出

200 https://stackoverflow.com/questions/5049244/how-can-i-ignore-server-response-t
o-save-bandwidth

请参阅How do you send a HEAD HTTP request in Python?

答案 2 :(得分:1)

很抱歉,但这没有多大意义,可能违反了HTTP协议。我认为这样的想法是奇怪的,破坏了设计。使用更少带宽使用的更智能协议,使远程服务器关闭或配置应用程序或在不同协议级别上运行在远程服务器上的任何应用程序。其他一切都很难被视为无稽之谈。