Add configurable HTTP/2 connection window (#36920)
This commit is contained in:
@@ -80,6 +80,11 @@ def handle_ssl_validation(server_args: Any):
|
||||
raise ValueError(
|
||||
"--http2-max-concurrent-streams must be between 1 and " "4294967295."
|
||||
)
|
||||
if not 1024 <= cfg.http2_initial_connection_window_size < 2**31:
|
||||
raise ValueError(
|
||||
"--http2-initial-connection-window-size must be between "
|
||||
"1024 and 2147483647."
|
||||
)
|
||||
|
||||
try:
|
||||
import granian # noqa: F401
|
||||
|
||||
@@ -2445,6 +2445,7 @@ def _run_granian_server(
|
||||
port,
|
||||
log_level,
|
||||
http2_max_concurrent_streams,
|
||||
http2_initial_connection_window_size,
|
||||
tokenizer_worker_num=1,
|
||||
ssl_certfile=None,
|
||||
ssl_keyfile=None,
|
||||
@@ -2482,7 +2483,8 @@ def _run_granian_server(
|
||||
interface=Interfaces.ASGI,
|
||||
http=HTTPModes.auto,
|
||||
http2_settings=HTTP2Settings(
|
||||
max_concurrent_streams=http2_max_concurrent_streams
|
||||
initial_connection_window_size=http2_initial_connection_window_size,
|
||||
max_concurrent_streams=http2_max_concurrent_streams,
|
||||
),
|
||||
log_level=log_level,
|
||||
ssl_cert=ssl_certfile,
|
||||
@@ -2617,6 +2619,9 @@ def _setup_and_run_http_server(
|
||||
http2_max_concurrent_streams=(
|
||||
server_args.http2_max_concurrent_streams
|
||||
),
|
||||
http2_initial_connection_window_size=(
|
||||
server_args.http2_initial_connection_window_size
|
||||
),
|
||||
ssl_certfile=server_args.ssl_certfile,
|
||||
ssl_keyfile=server_args.ssl_keyfile,
|
||||
ssl_ca_certs=server_args.ssl_ca_certs,
|
||||
@@ -2707,6 +2712,9 @@ def _setup_and_run_http_server(
|
||||
http2_max_concurrent_streams=(
|
||||
server_args.http2_max_concurrent_streams
|
||||
),
|
||||
http2_initial_connection_window_size=(
|
||||
server_args.http2_initial_connection_window_size
|
||||
),
|
||||
tokenizer_worker_num=server_args.tokenizer_worker_num,
|
||||
ssl_certfile=server_args.ssl_certfile,
|
||||
ssl_keyfile=server_args.ssl_keyfile,
|
||||
|
||||
@@ -1283,6 +1283,14 @@ class ServerArgs:
|
||||
"connection (1 to 2^32 - 1). Only applies with --enable-http2.",
|
||||
NS("serving"),
|
||||
] = 200
|
||||
http2_initial_connection_window_size: A[
|
||||
int,
|
||||
"Initial connection-level HTTP/2 receive window in bytes (1024 to "
|
||||
"2^31 - 1). Only applies with --enable-http2.",
|
||||
NS("serving"),
|
||||
] = (
|
||||
1024 * 1024
|
||||
)
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# SSL/TLS
|
||||
|
||||
@@ -31,9 +31,14 @@ class TestGranianHTTP2Config(unittest.TestCase):
|
||||
port=30000,
|
||||
log_level="info",
|
||||
http2_max_concurrent_streams=37,
|
||||
http2_initial_connection_window_size=8 * 1024 * 1024,
|
||||
)
|
||||
|
||||
self.assertEqual(configured["http2_settings"].max_concurrent_streams, 37)
|
||||
self.assertEqual(
|
||||
configured["http2_settings"].initial_connection_window_size,
|
||||
8 * 1024 * 1024,
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user