Как выбрать ближайшее / самое быстрое зеркало в Python? - PullRequest
2 голосов
/ 28 мая 2011

Я думал о том, как реализовать выбор зеркал в Python. Когда я вызываю сервис API, я получаю ответ с IP-адресом Теперь я хочу взять этот адрес и проверить, близок ли он мне или нет. Если нет, повторите попытку. Я думал о пинге, так как у меня всего 1 мс пинг по IP-адресам, размещенным в том же центре обработки данных, но намного выше по всему миру. Я посмотрел несколько примеров того, как реализовать ping в Python, но он кажется довольно сложным и немного хакерским (например, проверка, если целевой IP меньше 10 мс). Возможно, есть более эффективные способы решения этой проблемы, о которых я, возможно, не знаю.

Какие у тебя идеи? Я не могу загрузить любой тестовый файл каждый раз, чтобы проверить скорость. GeoIP или пинг? Или что-то еще?

Ответы [ 2 ]

4 голосов
/ 28 мая 2011

Плагин YUM fastestmirror использует грубый метод определения времени, необходимого для подключения к порту на удаленном сервере.Хотя он грубый, он измеряет задержку, а не пропускную способность, он довольно эффективен:

time_before = time.time()
sock.connect((self.host, self.port))
result = time.time() - time_before
sock.close()
1 голос
/ 28 мая 2011

Вызов всех экземпляров API службы и использование, которые когда-либо реагировали быстрее всего.

...