Нагрузочное тестирование с помощью Python

Коллеги, возможно кто-то сталкивался с задачей нагрузочного тестирования с помощью Python.
Нужно отрпавлять50-80 запросов в секунду(на сайт) на протяжении 20-30 секунд и принимать ответ в виде JSON’a обрабатывая статус ответа (error: 503-я ошибка nginx , или ок:запрос прошел).
Возможно ли использовать потоки в Python и как это лучше сделать? Также нужно просуммировать кол-во ответов со статусом OK в секунду.

3 Likes

Может быть, Вам подойдёт grinder (Jython)

Еще можно посмотреть в сторону Yandex Tank

1 Like

Для grinder’a я так понимаю нужен обьязательно Jython ? Просто все тесты написаны на Python (CPython) и нет возможности перейти на Java компилятор для Python

На python есть еще Multi-Mechanize Помимо этого есть еще одна хорошая тулзовина для нагрузки Web приложений - Tsung . Она позволяет делать большие нагрузки. Правда, если вы хотите запускать нагрузочные тесты своими уже написаными тестами на питоне, то тут уже другой подход.

2 Likes

Да, там именно Jython. Если вы завязаны на CPython, то думаю, стоит посмотреть на Pylot

1 Like

Если ты ограничен только пайтоном, то я тоже советую Multi-Mechanize, но из-за GIL сгенерить реквестов больше 20 в секунду будет очено трудно. Если не получится, то попробуй сам написать асинхронную штуку. Юзай что-то такое в лупе :

from multiprocessing import Pool
pool = Pool(70)
response = pool.map_async(execute_request, request_params)
responses = response.get()

Напиши функцию execute_request так чтобы она отдавала ответ и сеукнду в которую он был получен,
а потом промапь количество ответов по секундам.

1 Like

Ребят, если кто-то знает как прикрутить и настроить Multi-Mechanize в Eclipse напишите , плизз. Установил через pip , но запустить или создать проект с Multi-Mechanize не получается.
Либо мне на почту сбросьте свои координаты multi-1985@mail.ru , если согласны провести мини-мастер класс за оплату.

Ну лучше создать новую темы с информативным описанием, что пробовал, что не получилось и какие есть ошибки. А на счет консультации, если надо пиши в личку, помогу. Детали тут http://poliarush.com/services

На чем пробовал: Python 2.7 + Multi-Mechanize 1.2.0
Первое с чем столкнулся после интсаляции Multi-Mechanize (ставил через pip ) создал проект
multimech-newproject my_project
при запуске multimech-run my_project в results.csv не записывались данные.
В консоли получал ошибку ERROR: unable to create output directory
фиксается путем добавления import sys в resultswriter.py

После всех этих манипуляций результат сохранялся в results.csv
Дальше столкнулся с проблемой, что группы не запускаются параллельно. Пофиксить не удалось.
Так же с этим сталкивались другие Redirecting to Google Groups

  • Так же обнаружил проблему с обработкой запросов,т.к в результатх попадались запросы при которых сервер отдавал 503-ю(по сути недоступен) , но в логах результатов писался ответ как при 200-й

2.Без понятия как создавать и запускать Multi-Mechanize проект из Eclipse
задал вопрос в группе - Redirecting to Google Groups

Хотел еще добавить пару инструментов: