2011-02-19 59 views
3

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

+0

你必须要么使服务器无法发送一个响应,或使用UDP或其他。 – Falmarri 2011-02-19 06:23:51

+1

每秒一个请求和每个响应5k是18 MB /小时,这比2 GB低几个数量级。 – 2011-02-19 07:18:32

回答

1

对不起,但这没有多大意义,可能是违反HTTP协议。我认为这样一个想法是怪异的和设计的。可以使用带宽较少的智能协议使远程服务器闭嘴或配置应用程序,或者在不同的协议级别上配置应用程序或远程服务器上正在运行的任何应用程序。其他一切都很难被认为是无稽之谈。

3

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

如果您无法控制(即修剪)通知的服务器回复是什么,我可以考虑的唯一选择是在远程计算机上添加另一台服务器,等待一个简单的命令并在本地执行真正的请求将结果代码发回给您。这可以很容易地完成,甚至可以在本地使用例如netcat/wget的bash/perl/python。

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

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?