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.


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

pip install dapr-ext-grpc

pip3 install dapr-ext-grpc-dev


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:

from dapr.ext.grpc import App, InvokeServiceRequest, InvokeServiceResponse

app = App()

def mymethod(request: InvokeServiceRequest) -> InvokeServiceResponse:
    print(request.metadata, flush=True)
    print(request.text(), flush=True)

    return InvokeServiceResponse(b'INVOKE_RECEIVED', "text/plain; charset=UTF-8")

A full sample can be found here.

Subscribe to a topic

from cloudevents.sdk.event import v1
from dapr.ext.grpc import App

app = App()

@app.subscribe(pubsub_name='pubsub', topic='TOPIC_A')
def mytopic(event: v1.Event) -> None:

A full sample can be found here.

Setup input binding trigger

from dapr.ext.grpc import App, BindingRequest

app = App()

def binding(request: BindingRequest):
    print(request.text(), flush=True)

A full sample can be found here.