Как я могу игнорировать ответ сервера, чтобы сохранить пропускную способность? - PullRequest
3 голосов
/ 19 февраля 2011

Я использую сервер для отправки некоторой информации на другой сервер каждую секунду. Проблема в том, что ответ другого сервера составляет несколько килобайт, и это потребляет пропускную способность на первом сервере (около 2 ГБ в час). Я хотел бы отправить запрос и проигнорировать возврат (даже не получить его, чтобы сохранить пропускную способность) ..
Для этой задачи я использую небольшой скрипт на python (urllib). Я не против использования какого-либо другого инструмента или даже любого другого языка, если это будет сделано только для запроса.

Ответы [ 3 ]

3 голосов
/ 19 февраля 2011

5K-ответ - это мелочь и, вероятно, меньше стандартного размера окна TCP вашей ОС. Это означает, что даже если вы закроете сетевое соединение сразу после отправки запроса и проверки только самых первых байтов ответа (чтобы убедиться, что запрос действительно был получен), вероятно, сервер уже отправил вам весь ответ, а пакеты уже на проводе или на компьютере.

Если вы не можете контролировать (т. Е. Обрезать) ответ сервера для вашего уведомления, единственная альтернатива, о которой я могу подумать, - это добавить другой сервер на удаленном компьютере, ожидающий простую команду, выполняющий реальный запрос локально и просто отправляющий вернуться к вам код результата. Это может быть сделано очень легко, может быть даже просто с помощью bash / perl / python с использованием, например, netcat / wget локально.

Кстати, в вашей математике есть что-то странное, как правильно написал Гленн Мейнард в комментарии.

2 голосов
/ 19 февраля 2011

Для 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 /6269520/kak-ya-mogu-ignorirovat-otvet-servera-chtoby-sohranit-propusknuy-sposobnost
o-save-bandwidth

См. Как отправить HTTP-запрос HEAD на Python?

1 голос
/ 19 февраля 2011

Извините, но это не имеет особого смысла и, скорее всего, является нарушением протокола HTTP.Я считаю такую ​​идею странной и разбитой на части.Либо сделайте удаленный сервер закрытым, либо настройте свое приложение или все, что работает на удаленном сервере на другом уровне протокола, используя более интеллектуальный протокол с меньшим использованием полосы пропускания.Все остальное сложно считать ерундой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...