Skip to main content

用于为 Molotov 收集指标的库

项目描述

莫洛托夫扩展

用于为Molotov收集指标的库

安装

pip3 install molotov-ext

例子

负载测试.py

from argparse import Namespace

import molotov
from molotov.session import ClientSession as Session
from molotov_ext import scenario, register_reporter
from molotov_ext.formatters import PhantomFormatter


@molotov.global_setup()
def setup_global(args: Namespace):
    molotov.set_var("reporter", register_reporter(args))


@scenario(weight=1)
async def scenario(session: Session):
    async with session.get("http://localhost:8080") as resp:
        res = await resp.json()
        assert resp.status == 200


@molotov.global_teardown()
def teardown_global():
    reporter = molotov.get_var("reporter")
    reporter.save_workers_log("workers.csv")
    reporter.save_requests_log("requests.csv")
    reporter.save_client_errors_log("client_errors.csv")
    reporter.save_requests_log("phout_1.log", PhantomFormatter())
$ molotov --workers=1 --duration=1 --max-runs=1 -vv

加特林格式化程序

from argparse import Namespace

import molotov
from aiohttp import StringPayload, JsonPayload, ClientResponse as Response
from molotov.session import ClientSession as Session, LoggedClientRequest as Request

from molotov_ext import scenario, recorder, register_reporter
from molotov_ext.formatters import PhantomFormatter, GatlingFormatter
from molotov_ext.records import ScenarioRecord


def on_response(record: ScenarioRecord, response: Response, request: Request):
    if isinstance(request.body, (StringPayload, JsonPayload)):
        try:
            record.request_payload = request.body._value.decode(request.body.encoding)
        except:
            pass


recorder.register_response_hook(on_response)


@molotov.global_setup()
def setup_global(args: Namespace):
    molotov.set_var("reporter", register_reporter(args))


@scenario(weight=1)
async def scenario(session: Session):
    async with session.post("http://localhost:8080", json={"payload": "<payload>"}) as resp:
        res = await resp.json()
        assert resp.status == 200


@molotov.global_teardown()
def teardown_global():
    reporter = molotov.get_var("reporter")
    reporter.save_workers_log("workers.csv")
    reporter.save_requests_log("requests.csv")
    reporter.save_client_errors_log("client_errors.csv")
    reporter.save_requests_log("simulation.log", GatlingFormatter())

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

molotov-ext-1.0.1.tar.gz (9.3 kB 查看哈希)

已上传 source

内置分布

molotov_ext-1.0.1-py3-none-any.whl (10.9 kB 查看哈希

已上传 py3