Как выбрать ближайшее / самое быстрое зеркало в Python?

#python #ping #geo #geoip

#python #ping #гео #geoip

Вопрос:

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

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

Ответ №1:

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

 time_before = time.time()
sock.connect((self.host, self.port))
result = time.time() - time_before
sock.close()
  

Ответ №2:

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