From 2abab1d9dc384596902b467d606b5a16d1b2bb96 Mon Sep 17 00:00:00 2001 From: Matej Ohradzansky Date: Thu, 20 Nov 2025 15:34:46 +0000 Subject: [PATCH 1/4] support grpc server options Signed-off-by: Matej Ohradzansky --- crossplane/function/runtime.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crossplane/function/runtime.py b/crossplane/function/runtime.py index ddee602..4031d92 100644 --- a/crossplane/function/runtime.py +++ b/crossplane/function/runtime.py @@ -17,6 +17,7 @@ import asyncio import os import signal +from typing import Any, Optional, Sequence, Tuple import grpc from grpc_reflection.v1alpha import reflection @@ -73,6 +74,7 @@ def serve( *, creds: grpc.ServerCredentials, insecure: bool, + options: Optional[Sequence[Tuple[str, Any]]] = None, ) -> None: """Start a gRPC server and serve requests asychronously. @@ -91,7 +93,7 @@ def serve( # Define the loop before the server so everything uses the same loop. loop = asyncio.get_event_loop() - server = grpc.aio.server() + server = grpc.aio.server(options=options) loop.add_signal_handler( signal.SIGTERM, From 01f7a06c8969c9d77a7ca9427cface86696affaf Mon Sep 17 00:00:00 2001 From: Matej Ohradzansky Date: Thu, 20 Nov 2025 16:46:07 +0000 Subject: [PATCH 2/4] update Signed-off-by: Matej Ohradzansky --- crossplane/function/runtime.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crossplane/function/runtime.py b/crossplane/function/runtime.py index 4031d92..907c9a2 100644 --- a/crossplane/function/runtime.py +++ b/crossplane/function/runtime.py @@ -17,7 +17,7 @@ import asyncio import os import signal -from typing import Any, Optional, Sequence, Tuple +from typing import Any, Sequence, Tuple import grpc from grpc_reflection.v1alpha import reflection @@ -74,7 +74,7 @@ def serve( *, creds: grpc.ServerCredentials, insecure: bool, - options: Optional[Sequence[Tuple[str, Any]]] = None, + options: Sequence[Tuple[str, Any]] = None, ) -> None: """Start a gRPC server and serve requests asychronously. From 6094caddbda27293c0cffb86e973ca69aa61bab3 Mon Sep 17 00:00:00 2001 From: Matej Ohradzansky Date: Mon, 24 Nov 2025 07:38:58 +0000 Subject: [PATCH 3/4] fix lint issues Signed-off-by: Matej Ohradzansky --- crossplane/function/runtime.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/crossplane/function/runtime.py b/crossplane/function/runtime.py index 907c9a2..415fc46 100644 --- a/crossplane/function/runtime.py +++ b/crossplane/function/runtime.py @@ -17,7 +17,8 @@ import asyncio import os import signal -from typing import Any, Sequence, Tuple +from collections.abc import Sequence +from typing import Any import grpc from grpc_reflection.v1alpha import reflection @@ -74,7 +75,7 @@ def serve( *, creds: grpc.ServerCredentials, insecure: bool, - options: Sequence[Tuple[str, Any]] = None, + options: Sequence[tuple[str, Any]] | None = None, ) -> None: """Start a gRPC server and serve requests asychronously. @@ -83,6 +84,7 @@ def serve( address: The address at which to listen for requests. creds: The credentials used to authenticate requests. insecure: Serve insecurely, without credentials or encryption. + options: Additional gRPC server options. Raises: ValueError if creds is None and insecure is False. From cf9611c790f498e6649810a224170d598814baeb Mon Sep 17 00:00:00 2001 From: Matej Ohradzansky Date: Mon, 24 Nov 2025 14:18:56 +0000 Subject: [PATCH 4/4] add example to docstring Signed-off-by: Matej Ohradzansky --- crossplane/function/runtime.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crossplane/function/runtime.py b/crossplane/function/runtime.py index 415fc46..02df6a2 100644 --- a/crossplane/function/runtime.py +++ b/crossplane/function/runtime.py @@ -84,7 +84,9 @@ def serve( address: The address at which to listen for requests. creds: The credentials used to authenticate requests. insecure: Serve insecurely, without credentials or encryption. - options: Additional gRPC server options. + options: Additional gRPC server options. Eg. set max receive message + size to 5Mb (default is 4Mb): + [("grpc.max_receive_message_length", 1024 * 1024 * 5)] Raises: ValueError if creds is None and insecure is False.