#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 и используйте тот, который когда-либо реагировал быстрее всего.