Skip to content

Commit

Permalink
Start gRPC server with gzip compression enabled
Browse files Browse the repository at this point in the history
  • Loading branch information
radovanZRasa committed Jun 19, 2024
1 parent 6b78b2b commit c6ff6f6
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 10 deletions.
21 changes: 14 additions & 7 deletions rasa_sdk/grpc_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from concurrent import futures
from grpc import aio
from google.protobuf.json_format import MessageToDict, ParseDict
from opentelemetry import trace

from rasa_sdk.constants import (
DEFAULT_SERVER_PORT,
Expand Down Expand Up @@ -40,7 +41,7 @@
ActionMissingDomainException,
)
from rasa_sdk.tracing.utils import (
get_tracer_and_context,
get_tracer_provider,
TracerProvider,
)
from rasa_sdk.utils import (
Expand Down Expand Up @@ -124,10 +125,14 @@ async def Webhook(
Returns:
gRPC response.
"""
tracer, tracer_context, span_name = get_tracer_and_context(
self.tracer_provider, request
span_name = "GRPCActionServerWebhook.Webhook"
tracer = (
self.tracer_provider.get_tracer(span_name)
if self.tracer_provider
else trace.get_tracer(span_name)
)
with tracer.start_as_current_span(span_name, context=tracer_context):

with tracer.start_as_current_span(span_name):
check_version_compatibility(request.version)
if self.auto_reload:
self.executor.reload()
Expand Down Expand Up @@ -218,12 +223,14 @@ async def run_grpc(
endpoints: Path to the endpoints file.
"""
workers = number_of_sanic_workers()
server = aio.server(futures.ThreadPoolExecutor(max_workers=workers))
server = aio.server(
futures.ThreadPoolExecutor(max_workers=workers),
compression=grpc.Compression.Gzip,
)
initialise_interrupts(server)
executor = ActionExecutor()
executor.register_package(action_package_name)
# tracer_provider = get_tracer_provider(endpoints)
tracer_provider = None
tracer_provider = get_tracer_provider(endpoints)
action_webhook_pb2_grpc.add_ActionServiceServicer_to_server(
GRPCActionServerWebhook(executor, auto_reload, tracer_provider), server
)
Expand Down
5 changes: 2 additions & 3 deletions rasa_sdk/tracing/utils.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from rasa_sdk.grpc_py.action_webhook_pb2 import WebhookRequest
from rasa_sdk.tracing import config
from opentelemetry import trace
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
Expand All @@ -18,12 +17,12 @@ def get_tracer_provider(endpoints_file: str) -> Optional[TracerProvider]:


def get_tracer_and_context(
tracer_provider: Optional[TracerProvider], request: Union[Request, WebhookRequest]
tracer_provider: Optional[TracerProvider], request: Union[Request]
) -> Tuple[Any, Any, Text]:
"""Gets tracer and context."""
span_name = "create_app.webhook"

if tracer_provider is None or isinstance(request, WebhookRequest):
if tracer_provider is None:
tracer = trace.get_tracer(span_name)
context = None
else:
Expand Down

0 comments on commit c6ff6f6

Please sign in to comment.