gRPC 使用者

概觀

gRPC user 模板對 operator 提供的 stub 進行 unary 呼叫。底層使用 grpcio 與你自己的 *_pb2 / *_pb2_grpc,皆 lazy import — 以 pip install je_load_density[grpc] 安裝。

Task 欄位

欄位

意義

target / host

gRPC 端點,如 localhost:50051

stub_path

Stub 類別的 dotted path(pkg.greeter_pb2_grpc.GreeterStub)。

request_path

請求訊息的 dotted path(pkg.greeter_pb2.HelloRequest)。

method

Stub 上的 method 名。

payload

用以建構 request message 的 dict。

metadata

[key, value] pair 列表或扁平 dict。

timeout

單呼叫 timeout(秒),預設 10。

dotted path 在 importlib.import_module 之前會通過嚴格識別符 regex 驗證;traversal 攻擊(../;__import__)皆被拒絕。

範例

from je_load_density import start_test

start_test(
    user_detail_dict={"user": "grpc_user"},
    user_count=20,
    spawn_rate=5,
    test_time=60,
    tasks=[
        {
            "name": "say_hello",
            "target": "localhost:50051",
            "stub_path": "pkg.greeter_pb2_grpc.GreeterStub",
            "request_path": "pkg.greeter_pb2.HelloRequest",
            "method": "SayHello",
            "payload": {"name": "world"},
            "metadata": [["x-token", "abc"]],
            "timeout": 5,
        }
    ],
)

每次呼叫會觸發標記為 GRPC 的 Locust 事件。