Как проверить скорость интернета python
Перейти к содержимому

Как проверить скорость интернета python

  • автор:

Python: как проверить скорость Интернета

Возможно, вы уже пользовались сайтом speedtest раньше, но знаете ли вы, что в speedtest есть библиотека Python.
В этом руководстве мы научимся использовать библиотеку Speedtest для проверки скорости вашего интернета. Мы также узнаем, как использовать командные строки speedtest. Давайте начнем.

Установка Speedtest

Чтобы установить speedtest через pip, выполните следующую команду:

pip install speedtest-cli

Тест скорости интернета (скрипт)

После установки пакета speedtest. Теперь давайте посмотрим, как использовать его с кодом. В следующем коде я проверю скорость загрузки в Интернете.

import speedtest # Speed test st = speedtest.Speedtest() # Download Speed ds = st.download() print(ds)

Позвольте мне объяснить.
Сначала мы импортируем пакет speedtest. Затем вызывается класс Speedtest() . Затем проверьте мою скорость загрузки с помощью метода download() . Наконец, распечатайте результат. Вывод:

3422459.073187817

Как видите, скорость интернета выражена в байтах . Чтобы сделать его читабельным, мы воспользуемся следующей функцией.

def humansize(nbytes): suffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'] i = 0 while nbytes >= 1024 and i < len(suffixes)-1: nbytes /= 1024. i += 1 f = ('%.2f' % nbytes).rstrip('0').rstrip('.') return '%s %s' % (f, suffixes[i]) #Readable print(humansize(ds))
3.56 MB

Теперь давайте проверим скорость загрузки с помощью метода upload() .

import speedtest # Speed test st = speedtest.Speedtest() # Upload speed us = st.upload() print(us) #Readable print(humansize(us))
386382.6586620888 301.51 KB

Командные строки Speedtest

Speedtest также предоставляет командные строки для проверки скорости нашего интернета.

Использование:

Команда помощи:

speedtest-cli -h
usage: speedtest-cli [-h] [--no-download] [--no-upload] [--single] [--bytes] [--share] [--simple] [--csv] [--csv-delimiter CSV_DELIMITER] [--csv-header] [--json] [--list] [--server SERVER] [--exclude EXCLUDE] [--mini MINI] [--source SOURCE] [--timeout TIMEOUT] [--secure] [--no-pre-allocate] [--version] Command line interface for testing internet bandwidth using speedtest.net.

Проверить скорость интернета:

speedtest-cli
Retrieving speedtest.net configuration. Testing from xxx Telecom (196.89.30.99). Retrieving speedtest.net server list. Selecting best server based on ping. Hosted by xxx Telecom (xxx) [394.57 km]: 29.1 ms Testing download speed. Download: 8.30 Mbit/s Testing upload speed. Upload: 10.33 Mbit/s

Эта команда выше проверяет ping , скорость загрузки и скорость скачивания . Проверить скорость интернета: по ссылке для обмена:

speedtest-cli --share
Retrieving speedtest.net configuration. Testing from xxx Telecom (196.89.30.99). Retrieving speedtest.net server list. Selecting best server based on ping. Hosted by xxx Telecom (xxx) [394.57 km]: 28.131 ms Testing download speed. Download: 3.74 Mbit/s Testing upload speed. Upload: 0.39 Mbit/s Share results: http://www.speedtest.net/result/12339819892.png

Speed Test Result

Как видите, у нас есть URL результатов. Откроем его в браузере. Результат: Надеемся, это легко понять. До скорого.

Использованная литература:

Рекомендуем хостинг TIMEWEB

Рекомендуем хостинг TIMEWEB

Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

По статье задано0 вопрос(ов)
Подписка на обсуждение 1
Подписка на раздел 73

Вам это нравится? Поделитесь в социальных сетях!

Тест скорости интернета в Linux

Тест скорости интернета в Linux

Данная статья поможет Вам узнать, как можно измерить скорость интернета на сервере с Linux системой. В данном случае мы рекомендуем использовать утилиту speedtest-cli. Вы можете напрямую установить пакет phython speedtest на свой дистрибутив Linux, а затем запустить тест через команду в терминале.

Мы расскажем Вам как это сделать шаг за шагом, используя приведенную ниже инструкцию.

Что такое speedtest-cli?

Утилита speedtest-cli — это скрипт, который написан на Python. Он измеряет скорость интернет-трафика в двух направлениях (Upload/Download) используя инфраструктуру speedtest.net для измерения скорости. Для данной программы необходимо установить Python 2.4-3.4 или выше.

Данная сервисная программа позволит узнать скорость сервера (загрузки и выгрузки) с разных точек мира.

Установка EPEL

EPEL (Extra Packages for Enterprise Linux) — это основанный сообществом открытый и бесплатный проект репозитория предоставляемый командой Fedora, который содержит высококачественные пакеты дополнительного программного обеспечения для Linux дистрибутивов.

Установка Pyhton и pyhthon-pip

Под модулем в Python понимается файл с расширением .py. Модули предназначены для того, чтобы в них хранить часто используемые функции, классы, константы и т.п. Можно условно разделить модули и программы: программы предназначены для непосредственного запуска, а модули для импортирования их в другие программы. Стоит заметить, что модули могут быть написаны не только на языке Python, но и на других языках.

pip — система управления пакетами, которая используется для установки и управления программными пакетами написанными на Python. Большинство дистрибутивов Python уже содержат pip. Если pip отсутствует, то его можно установить при помощи системы управления пакетами.

Примеры Linux систем

Установка утилиты на примере различных ОС

Centos:

Установка EPEL release :

yum install epel-release -y

Тест скорости интернета в Linux test skorosti interneta v linux1

Установка python и python-pip :

yum install python python-pip -y

Тест скорости интернета в Linux test skorosti interneta v linux 2 1024x458

Установка Speedtest-cli пакета с помощью pip :

pip install –upgrade pip

Тест скорости интернета в Linux test skorosti interneta v linux 3 1024x115

Debian/Ubuntu:

Для начала обновите все пакеты:

Тест скорости интернета в Linux test skorosti interneta v linux 4

Установка python и python-pip :

apt install python python-pip -y

pip install –upgrade pip

Тест скорости интернета в Linux test skorosti interneta v linux 5 1024x104

Установка Speedtest-cli пакет с помощью pip :

apt-get install speedtest-cli

FreeBSD:

Установка python :

pkg install python

Тест скорости интернета в Linux test skorosti interneta v linux 6

Скачайтефайл speedtest-cli.py:

wget –no-check-certificate -O speedtest-cli

Тест скорости интернета в Linux test skorosti interneta v linux 7 1024x156

Назначте необходимые права на скаченный файл:

chmod 777 speedtest-cli

Запустите скрипт для проверки скорости интернета:

Тест скорости интернета в Linux test skorosti interneta v linux 8

Установка и пользование утилиты Speedtest-cli

Для установке используйте pip команду:

pip install speedtest-cli

Для того чтобы выбрать локацию сервера для проверки используйте команду:

Для подробной инструкции по использованию данной утилиты вы можите найти, введя следующую команду:

Каждый сервер проверок обладает собственным уникальным ID, например:

2113) Gatchina-Online (Gatchina, Russian Federation) [305.32 km]

Для того чтобы использовать этот сервер для проверки используйте команду:

speedtest-cli –server 2113

Разумеется данные команды нужно выполнять в консоли сервера или используя SSH.

Заключение

Независимо от того, какой тип сервера вы используете – Облачный KVM или Выделенный Сервер, тестирование скорости интернета поможет определить, насколько быстро сервер может обрабатывать запросы и какой уровень производительности можно ожидать. Правильный выбор инструментов и технологий может помочь вам достичь ваших бизнес-целей и повысить производительность вашей инфраструктуры.

Проверка скорости интернета библиотекой Requests в мультипроцессинге

Сегодня речь пойдет о том, как из идеи по замеру скорости, был создан скрипт для загрузки файла изображения и отправки его же обратно на сервер, с расчетом времени выполнения каждой из функций и вычисления скорости.

Начну со списка используемых библиотек:

  • import os
  • from multiprocessing import Pool
  • import time
  • import pandas as pd
  • import requests
server_list = [ < 'server_id': 3682, 'download': 'http://moscow.speedtest.rt.ru:8080/speedtest/random7000x7000.jpg', 'upload': 'http://moscow.speedtest.rt.ru:8080/speedtest/upload.php' >]

Пишем первую функцию:

def download(id, path): start = time.time() file_name = str(id) + str(path.split('/')[-1]) try: r = requests.get(path, stream=True, timeout=5) except: return 0 size = int(r.headers.get('Content-Length', 0)) with open(file_name, 'wb') as f: for chunk in r.iter_content(chunk_size=1024): if chunk: f.write(chunk) end = time.time() duration = end - start sp = (((size * 8) / 1024) / 1024) / duration return sp

Теперь подробнее о том, что происходит.

В функции есть время старта и время окончания(в секундах), из которых в дальнейшем мы получаем время жизни. В имя файла записываем id сервера и название изображения(сделано для того, чтобы не возникало конфликтов при загрузке из множества источников). Далее делаем GET запрос, получаем размер файла(в байтах) и сохраняем его на диск. Переводим байты в биты, еще немного магии с формулами и на выходе имеем скорость в MBit/s.

Следующая функция — отдача файла на сервер:

def upload(id, path): start = time.time() file_name = str(id) + 'random7000x7000.jpg' with open(file_name, 'rb') as f: files = try: requests.post(path, files=files) except: return 0 size = os.path.getsize(file_name) end = time.time() duration = end - start sp = (((size * 8) / 1024) / 1024) / duration return sp

Здесь принцип тот же, только мы берем файл из локальной папки и POST запросом отправляем.

Наша следующая задача получить данные из двух предыдущих функций. Пишем еще одну функцию:

def test_f(conn, server): speed_download = download(server['server_id'], server['download']) speed_upload = upload(server['server_id'], server['upload']) return server['server_id'], speed_download, speed_upload 

Осталось дело за малым, прикрутить мультипроцессинг с пулом и параллельной функцией map:

def main(): pool = Pool() data = pool.map(test_f, server_list) df = pd.DataFrame(data, columns=['Server', 'Download', 'Upload']) print(df) pool.close() pool.join()
if __name__ == '__main__': main() 

Скрипт готов к использованию, для удобства вывода я использовал библиотеку pandas. Так же вывод можно поместить в базу и собирать статистику для анализа.

Спасибо за внимание!

UPD: Поправил исключения, внес правки в работу мультипроцессинга(заменил цикл на параллельную функцию), добавил таймаут для GET запроса

Как измерить скорость канала сервера или VPS

Скорость сетевого подключения сервера к каналам связи оказывает прямое влияние на быстродействие сайта. Как измерить скорость подключения VPS к интернету? Есть простой способ.

Зачем измерять скорость сетевого подключения

Зачастую хостеры экономят на оборудовании, вроде бы покупаешь нормальную конфигурацию сервера - и диск быстрый, и процессоры мощные и сервер в крупном дата-центре в столице. А сайт еле шевелится. И вот толпы разработчиков оптимизируют его под Яндекс, под Google PageSpeed Insights, снова и снова настраивают сервер. А скорость не растет, сайт ползает.

И в последнюю очередь в голову приходит мысль о том, что не мешало бы проверить с какой скоростью наш сайт подключен к внешним каналам Интернета. Если на ваш VPS выделяется полоса пропускания в 100 Мбит/сек, то вряд ли он будет быстр и весел под нагрузкой. В среднем он сможет быстро отдать контент 3 посетителям одновременно, четвертый уже будет ждать освобождения полосы пропускания.

Способы измерения скорости сети

Утилита wget

С давних времен известен простой способ скачивания 100 Мб файла с соседнего сервера утилитой wget. Но сегодня это не модно, да и скорость будет ограничена характеристиками соседнего сервера.

Сервис SpeedTest.net

Будем использовать консольную утилиту speedtest-cli. Это клиент SpeedTest.net на Python, он может измерять скорость интернета на сервере как на прием, так и на передачу. Можно измерить скорость до конкретного узла или поделиться результатом через интернет.

Установка speedtest-cli

Для начала надо установить сам Python:
Исходный код:

yum -y install python

Затем придется скачать сам клиент и предоставить файлу права на исполнение:
Исходный код:

cd ~ wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py chmod +x speedtest-cli

Теперь можно запустить клиента командой:
Исходный код:

./speedtest-cli

Вывод speedtest-cli

Вывод утилиты speedtest-cli

Опции speedtest-cli

По умолчанию скорость показана в битах. Вы можете посмотреть результат выполнения в байтах, для этого есть специальный ключ --bytes. Вот так его можно использовать:

Исходный код:

./speedtest-cli --bytes

Можно использовать несколько ключей одновременно, просто пропишите их все в команде. Вот несколько полезных ключей с пояснениями:

Исходный код:

./speedtest-cli --simple #короткий вывод, только пинг и скорость ./speedtest-cli --share #ссылка на результат измерений ./speedtest-cli --list #список серверов ./speedtest-cli --version #вывод версии утилиты ./speedtest-cli --help #вывод помощи

speedtest-simple.png

Короткий вывод утилиты speedtest-cli

speedtest share

Результат выполнения с ключом --share
Выбор сервера speedtest

По-умолчанию, утилита находит ближайший узел и замеряет скорость с его помощью, но вы можете изменить это поведение. Для начала нам нужно узнать ID интересующих нас узлов. Например, если нам нужны узлы в Москве, то можем отфильтровать узлы с помощью grep:

Исходный код:

./speedtest-cli --list | grep Moscow

А можем скачать список всех узлов с сайта speedtest.net утилитой wget:
Исходный код:

wget http://www.speedtest.net/speedtest-servers.php

Узнаем нужный ID и проверяем скорость соединения с этим узлом:
Исходный код:

./speedtest-cli --server 6827

speedtest-list.png

Проверка скорости до конкретного узла

Для тестов мы использовали облачные серверы REG.RU и как видите, они показывают очень неплохую скорость. И это с учетом того, что тесты проводились на самом дешевом стандартном сервере. Для проектов на 1С-Битрикс мы рекомендуем облачные Высокочастотные серверы они реально быстрые, отзывчивые и удобные.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *