Skip to content
This repository was archived by the owner on Mar 26, 2025. It is now read-only.

Commit 1cca7d2

Browse files
macwilksrhinos
andauthored
Allow Settable GRPC Max Send / Receive Message Size Limits (#176)
* Enable Config Loading GRPC Message Size Limits * Add GRPC Message Size Limits to Config --------- Co-authored-by: srhinos <[email protected]>
1 parent e84e0a6 commit 1cca7d2

File tree

2 files changed

+29
-11
lines changed

2 files changed

+29
-11
lines changed

hatchet_sdk/connection.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
import os
2-
from typing import Any
2+
from typing import TYPE_CHECKING, Any
33

44
import grpc
55

6+
if TYPE_CHECKING:
7+
from hatchet_sdk.loader import ClientConfig
68

7-
def new_conn(config, aio=False):
9+
10+
def new_conn(config: "ClientConfig", aio=False):
811

912
credentials: grpc.ChannelCredentials | None = None
1013

@@ -30,6 +33,8 @@ def new_conn(config, aio=False):
3033
strat = grpc if not aio else grpc.aio
3134

3235
channel_options = [
36+
("grpc.max_send_message_length", config.grpc_max_send_message_length),
37+
("grpc.max_receive_message_length", config.grpc_max_recv_message_length),
3338
("grpc.keepalive_time_ms", 10 * 1000),
3439
("grpc.keepalive_timeout_ms", 60 * 1000),
3540
("grpc.client_idle_timeout_ms", 60 * 1000),

hatchet_sdk/loader.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os
22
from logging import Logger, getLogger
3-
from typing import Any, Dict, Optional
3+
from typing import Dict, Optional
44

55
import yaml
66

@@ -36,6 +36,8 @@ def __init__(
3636
namespace: str = None,
3737
listener_v2_timeout: int = None,
3838
logger: Logger = None,
39+
grpc_max_recv_message_length: int = 4 * 1024 * 1024, # 4MB
40+
grpc_max_send_message_length: int = 4 * 1024 * 1024, # 4MB
3941
):
4042
self.tenant_id = tenant_id
4143
self.tls_config = tls_config
@@ -44,6 +46,8 @@ def __init__(
4446
self.server_url = server_url
4547
self.namespace = ""
4648
self.logger = logger
49+
self.grpc_max_recv_message_length = grpc_max_recv_message_length
50+
self.grpc_max_send_message_length = grpc_max_send_message_length
4751

4852
if not self.logger:
4953
self.logger = getLogger()
@@ -98,6 +102,13 @@ def get_config_value(key, env_var):
98102
host_port = get_config_value("hostPort", "HATCHET_CLIENT_HOST_PORT")
99103
server_url: str | None = None
100104

105+
grpc_max_recv_message_length = get_config_value(
106+
"grpc_max_recv_message_length", "HATCHET_GRPC_MAX_RECV_MESSAGE_LENGTH"
107+
)
108+
grpc_max_send_message_length = get_config_value(
109+
"grpc_max_send_message_length", "HATCHET_GRPC_MAX_SEND_MESSAGE_LENGTH"
110+
)
111+
101112
if not host_port:
102113
# extract host and port from token
103114
server_url, grpc_broadcast_address = get_addresses_from_jwt(token)
@@ -109,14 +120,16 @@ def get_config_value(key, env_var):
109120
tls_config = self._load_tls_config(config_data["tls"], host_port)
110121

111122
return ClientConfig(
112-
tenant_id,
113-
tls_config,
114-
token,
115-
host_port,
116-
server_url,
117-
namespace,
118-
listener_v2_timeout,
119-
defaults.logger,
123+
tenant_id=tenant_id,
124+
tls_config=tls_config,
125+
token=token,
126+
host_port=host_port,
127+
server_url=server_url,
128+
namespace=namespace,
129+
listener_v2_timeout=listener_v2_timeout,
130+
logger=defaults.logger,
131+
grpc_max_recv_message_length=grpc_max_recv_message_length,
132+
grpc_max_send_message_length=grpc_max_send_message_length,
120133
)
121134

122135
def _load_tls_config(self, tls_data: Dict, host_port) -> ClientTLSConfig:

0 commit comments

Comments
 (0)