Getting started with the Dapr Python gRPC service extension

How to get up and running with the Dapr Python gRPC extension package

The Dapr Python SDK provides a built in gRPC server extension module, dapr.ext.grpc, for creating Dapr services.

Installation

You can download and install the Dapr gRPC server extension module with:

  1. pip install dapr-ext-grpc

Note

The development package will contain features and behavior that will be compatible with the pre-release version of the Dapr runtime. Make sure to uninstall any stable versions of the Python SDK extension before installing the dapr-dev package.

  1. pip3 install dapr-ext-grpc-dev

Examples

The App object can be used to create a server.

Listen for service invocation requests

The InvokeServiceReqest and InvokeServiceResponse objects can be used to handle incoming requests.

A simple service that will listen and respond to requests will look like:

  1. from dapr.ext.grpc import App, InvokeServiceRequest, InvokeServiceResponse
  2. app = App()
  3. @app.method(name='my-method')
  4. def mymethod(request: InvokeServiceRequest) -> InvokeServiceResponse:
  5. print(request.metadata, flush=True)
  6. print(request.text(), flush=True)
  7. return InvokeServiceResponse(b'INVOKE_RECEIVED', "text/plain; charset=UTF-8")
  8. app.run(50051)

A full sample can be found here.

Subscribe to a topic

  1. from cloudevents.sdk.event import v1
  2. from dapr.ext.grpc import App
  3. app = App()
  4. @app.subscribe(pubsub_name='pubsub', topic='TOPIC_A')
  5. def mytopic(event: v1.Event) -> None:
  6. print(event.Data(),flush=True)
  7. app.run(50051)

A full sample can be found here.

Setup input binding trigger

  1. from dapr.ext.grpc import App, BindingRequest
  2. app = App()
  3. @app.binding('kafkaBinding')
  4. def binding(request: BindingRequest):
  5. print(request.text(), flush=True)
  6. app.run(50051)

A full sample can be found here.

Related links

Last modified January 1, 0001