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.
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()
@app.method(name='my-method')
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")
app.run(50051)
A full sample can be found here.
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:
print(event.Data(),flush=True)
app.run(50051)
A full sample can be found here.
from dapr.ext.grpc import App, BindingRequest
app = App()
@app.binding('kafkaBinding')
def binding(request: BindingRequest):
print(request.text(), flush=True)
app.run(50051)
A full sample can be found here.