{"@attributes":{"version":"2.0"},"channel":{"title":"Dapr Python SDK extensions on Dapr Docs","link":"https:\/\/docs.dapr.io\/developing-applications\/sdks\/python\/python-sdk-extensions\/","description":"Recent content in Dapr Python SDK extensions on Dapr Docs","generator":"Hugo","language":"en","item":[{"title":"Getting started with the Dapr Python gRPC service extension","link":"https:\/\/docs.dapr.io\/developing-applications\/sdks\/python\/python-sdk-extensions\/python-grpc\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/docs.dapr.io\/developing-applications\/sdks\/python\/python-sdk-extensions\/python-grpc\/","description":"<p>The Dapr Python SDK provides a built in gRPC server extension, <code>dapr.ext.grpc<\/code>, for creating Dapr services.<\/p>\n<h2 id=\"installation\">Installation<\/h2>\n<p>You can download and install the Dapr gRPC server extension with:<\/p>\n\n\n\n\n\n\n<ul class=\"nav nav-tabs\" id=\"tabs-0\" role=\"tablist\">\n <li class=\"nav-item\">\n <button class=\"nav-link active\"\n id=\"tabs-00-00-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#tabs-00-00\" role=\"tab\"\n data-td-tp-persist=\"stable\" aria-controls=\"tabs-00-00\" aria-selected=\"true\">\n Stable\n <\/button>\n <\/li><li class=\"nav-item\">\n <button class=\"nav-link\"\n id=\"tabs-00-01-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#tabs-00-01\" role=\"tab\"\n data-td-tp-persist=\"development\" aria-controls=\"tabs-00-01\" aria-selected=\"false\">\n Development\n <\/button>\n <\/li>\n<\/ul>\n\n<div class=\"tab-content\" id=\"tabs-0-content\">\n <div class=\"tab-body tab-pane fade show active\"\n id=\"tabs-00-00\" role=\"tabpanel\" aria-labelled-by=\"tabs-00-00-tab\" tabindex=\"0\">\n <div class=\"highlight\"><pre tabindex=\"0\" class=\"chroma\"><code class=\"language-bash\" data-lang=\"bash\"><span class=\"line\"><span class=\"cl\">pip install dapr-ext-grpc\n<\/span><\/span><\/code><\/pre><\/div>\n <\/div>\n <div class=\"tab-body tab-pane fade\"\n id=\"tabs-00-01\" role=\"tabpanel\" aria-labelled-by=\"tabs-00-01-tab\" tabindex=\"0\">\n <div class=\"alert alert-warning\" role=\"alert\">\n<h4 class=\"alert-heading\">Note<\/h4>\n<pre><code>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 &lt;code&gt;dapr-dev&lt;\/code&gt; package.\n<\/code><\/pre>\n<\/div>\n<div class=\"highlight\"><pre tabindex=\"0\" class=\"chroma\"><code class=\"language-bash\" data-lang=\"bash\"><span class=\"line\"><span class=\"cl\">pip3 install dapr-ext-grpc-dev\n<\/span><\/span><\/code><\/pre><\/div>\n <\/div>\n<\/div>\n\n<h2 id=\"examples\">Examples<\/h2>\n<p>The <code>App<\/code> object can be used to create a server.<\/p>"},{"title":"Dapr Python SDK integration with FastAPI","link":"https:\/\/docs.dapr.io\/developing-applications\/sdks\/python\/python-sdk-extensions\/python-fastapi\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/docs.dapr.io\/developing-applications\/sdks\/python\/python-sdk-extensions\/python-fastapi\/","description":"<p>The Dapr Python SDK provides integration with FastAPI using the <code>dapr-ext-fastapi<\/code> extension.<\/p>\n<h2 id=\"installation\">Installation<\/h2>\n<p>You can download and install the Dapr FastAPI extension with:<\/p>\n\n\n\n\n\n\n<ul class=\"nav nav-tabs\" id=\"tabs-0\" role=\"tablist\">\n <li class=\"nav-item\">\n <button class=\"nav-link active\"\n id=\"tabs-00-00-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#tabs-00-00\" role=\"tab\"\n data-td-tp-persist=\"stable\" aria-controls=\"tabs-00-00\" aria-selected=\"true\">\n Stable\n <\/button>\n <\/li><li class=\"nav-item\">\n <button class=\"nav-link\"\n id=\"tabs-00-01-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#tabs-00-01\" role=\"tab\"\n data-td-tp-persist=\"development\" aria-controls=\"tabs-00-01\" aria-selected=\"false\">\n Development\n <\/button>\n <\/li>\n<\/ul>\n\n<div class=\"tab-content\" id=\"tabs-0-content\">\n <div class=\"tab-body tab-pane fade show active\"\n id=\"tabs-00-00\" role=\"tabpanel\" aria-labelled-by=\"tabs-00-00-tab\" tabindex=\"0\">\n <div class=\"highlight\"><pre tabindex=\"0\" class=\"chroma\"><code class=\"language-bash\" data-lang=\"bash\"><span class=\"line\"><span class=\"cl\">pip install dapr-ext-fastapi\n<\/span><\/span><\/code><\/pre><\/div>\n <\/div>\n <div class=\"tab-body tab-pane fade\"\n id=\"tabs-00-01\" role=\"tabpanel\" aria-labelled-by=\"tabs-00-01-tab\" tabindex=\"0\">\n <div class=\"alert alert-warning\" role=\"alert\">\n<h4 class=\"alert-heading\">Note<\/h4>\n<pre><code>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 &lt;code&gt;dapr-dev&lt;\/code&gt; package.\n<\/code><\/pre>\n<\/div>\n<div class=\"highlight\"><pre tabindex=\"0\" class=\"chroma\"><code class=\"language-bash\" data-lang=\"bash\"><span class=\"line\"><span class=\"cl\">pip install dapr-ext-fastapi-dev\n<\/span><\/span><\/code><\/pre><\/div>\n <\/div>\n<\/div>\n\n<h2 id=\"example\">Example<\/h2>\n<h3 id=\"subscribing-to-events-of-different-types\">Subscribing to events of different types<\/h3>\n<div class=\"highlight\"><pre tabindex=\"0\" class=\"chroma\"><code class=\"language-python\" data-lang=\"python\"><span class=\"line\"><span class=\"cl\"><span class=\"kn\">import<\/span> <span class=\"nn\">uvicorn<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"kn\">from<\/span> <span class=\"nn\">fastapi<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Body<\/span><span class=\"p\">,<\/span> <span class=\"n\">FastAPI<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"kn\">from<\/span> <span class=\"nn\">dapr.ext.fastapi<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">DaprApp<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"kn\">from<\/span> <span class=\"nn\">pydantic<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">BaseModel<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"k\">class<\/span> <span class=\"nc\">RawEventModel<\/span><span class=\"p\">(<\/span><span class=\"n\">BaseModel<\/span><span class=\"p\">):<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"n\">body<\/span><span class=\"p\">:<\/span> <span class=\"nb\">str<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"k\">class<\/span> <span class=\"nc\">User<\/span><span class=\"p\">(<\/span><span class=\"n\">BaseModel<\/span><span class=\"p\">):<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"nb\">id<\/span><span class=\"p\">:<\/span> <span class=\"nb\">int<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"n\">name<\/span><span class=\"p\">:<\/span> <span class=\"nb\">str<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"k\">class<\/span> <span class=\"nc\">CloudEventModel<\/span><span class=\"p\">(<\/span><span class=\"n\">BaseModel<\/span><span class=\"p\">):<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"n\">data<\/span><span class=\"p\">:<\/span> <span class=\"n\">User<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"n\">datacontenttype<\/span><span class=\"p\">:<\/span> <span class=\"nb\">str<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"nb\">id<\/span><span class=\"p\">:<\/span> <span class=\"nb\">str<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"n\">pubsubname<\/span><span class=\"p\">:<\/span> <span class=\"nb\">str<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"n\">source<\/span><span class=\"p\">:<\/span> <span class=\"nb\">str<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"n\">specversion<\/span><span class=\"p\">:<\/span> <span class=\"nb\">str<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"n\">topic<\/span><span class=\"p\">:<\/span> <span class=\"nb\">str<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"n\">traceid<\/span><span class=\"p\">:<\/span> <span class=\"nb\">str<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"n\">traceparent<\/span><span class=\"p\">:<\/span> <span class=\"nb\">str<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"n\">tracestate<\/span><span class=\"p\">:<\/span> <span class=\"nb\">str<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"nb\">type<\/span><span class=\"p\">:<\/span> <span class=\"nb\">str<\/span> \n<\/span><\/span><span class=\"line\"><span class=\"cl\"> \n<\/span><\/span><span class=\"line\"><span class=\"cl\"> \n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"n\">app<\/span> <span class=\"o\">=<\/span> <span class=\"n\">FastAPI<\/span><span class=\"p\">()<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"n\">dapr_app<\/span> <span class=\"o\">=<\/span> <span class=\"n\">DaprApp<\/span><span class=\"p\">(<\/span><span class=\"n\">app<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Allow handling event with any structure (Easiest, but least robust)<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># dapr publish --publish-app-id sample --topic any_topic --pubsub pubsub --data &#39;{&#34;id&#34;:&#34;7&#34;, &#34;desc&#34;: &#34;good&#34;, &#34;size&#34;:&#34;small&#34;}&#39;<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nd\">@dapr_app.subscribe<\/span><span class=\"p\">(<\/span><span class=\"n\">pubsub<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;pubsub&#39;<\/span><span class=\"p\">,<\/span> <span class=\"n\">topic<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;any_topic&#39;<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"k\">def<\/span> <span class=\"nf\">any_event_handler<\/span><span class=\"p\">(<\/span><span class=\"n\">event_data<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Body<\/span><span class=\"p\">()):<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">event_data<\/span><span class=\"p\">)<\/span> \n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># For robustness choose one of the below based on if publisher is using CloudEvents<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Handle events sent with CloudEvents<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># dapr publish --publish-app-id sample --topic cloud_topic --pubsub pubsub --data &#39;{&#34;id&#34;:&#34;7&#34;, &#34;name&#34;:&#34;Bob Jones&#34;}&#39;<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nd\">@dapr_app.subscribe<\/span><span class=\"p\">(<\/span><span class=\"n\">pubsub<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;pubsub&#39;<\/span><span class=\"p\">,<\/span> <span class=\"n\">topic<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;cloud_topic&#39;<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"k\">def<\/span> <span class=\"nf\">cloud_event_handler<\/span><span class=\"p\">(<\/span><span class=\"n\">event_data<\/span><span class=\"p\">:<\/span> <span class=\"n\">CloudEventModel<\/span><span class=\"p\">):<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">event_data<\/span><span class=\"p\">)<\/span> \n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Handle raw events sent without CloudEvents<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># curl -X &#34;POST&#34; http:\/\/localhost:3500\/v1.0\/publish\/pubsub\/raw_topic?metadata.rawPayload=true -H &#34;Content-Type: application\/json&#34; -d &#39;{&#34;body&#34;: &#34;345&#34;}&#39;<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nd\">@dapr_app.subscribe<\/span><span class=\"p\">(<\/span><span class=\"n\">pubsub<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;pubsub&#39;<\/span><span class=\"p\">,<\/span> <span class=\"n\">topic<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;raw_topic&#39;<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"k\">def<\/span> <span class=\"nf\">raw_event_handler<\/span><span class=\"p\">(<\/span><span class=\"n\">event_data<\/span><span class=\"p\">:<\/span> <span class=\"n\">RawEventModel<\/span><span class=\"p\">):<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">event_data<\/span><span class=\"p\">)<\/span> \n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> \n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"k\">if<\/span> <span class=\"vm\">__name__<\/span> <span class=\"o\">==<\/span> <span class=\"s2\">&#34;__main__&#34;<\/span><span class=\"p\">:<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"n\">uvicorn<\/span><span class=\"o\">.<\/span><span class=\"n\">run<\/span><span class=\"p\">(<\/span><span class=\"n\">app<\/span><span class=\"p\">,<\/span> <span class=\"n\">host<\/span><span class=\"o\">=<\/span><span class=\"s2\">&#34;0.0.0.0&#34;<\/span><span class=\"p\">,<\/span> <span class=\"n\">port<\/span><span class=\"o\">=<\/span><span class=\"mi\">30212<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><\/code><\/pre><\/div><h3 id=\"creating-an-actor\">Creating an actor<\/h3>\n<div class=\"highlight\"><pre tabindex=\"0\" class=\"chroma\"><code class=\"language-python\" data-lang=\"python\"><span class=\"line\"><span class=\"cl\"><span class=\"kn\">from<\/span> <span class=\"nn\">fastapi<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">FastAPI<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"kn\">from<\/span> <span class=\"nn\">dapr.ext.fastapi<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">DaprActor<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"kn\">from<\/span> <span class=\"nn\">demo_actor<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">DemoActor<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"n\">app<\/span> <span class=\"o\">=<\/span> <span class=\"n\">FastAPI<\/span><span class=\"p\">(<\/span><span class=\"n\">title<\/span><span class=\"o\">=<\/span><span class=\"sa\">f<\/span><span class=\"s1\">&#39;<\/span><span class=\"si\">{<\/span><span class=\"n\">DemoActor<\/span><span class=\"o\">.<\/span><span class=\"vm\">__name__<\/span><span class=\"si\">}<\/span><span class=\"s1\">Service&#39;<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Add Dapr Actor Extension<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"n\">actor<\/span> <span class=\"o\">=<\/span> <span class=\"n\">DaprActor<\/span><span class=\"p\">(<\/span><span class=\"n\">app<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nd\">@app.on_event<\/span><span class=\"p\">(<\/span><span class=\"s2\">&#34;startup&#34;<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"k\">async<\/span> <span class=\"k\">def<\/span> <span class=\"nf\">startup_event<\/span><span class=\"p\">():<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"c1\"># Register DemoActor<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"k\">await<\/span> <span class=\"n\">actor<\/span><span class=\"o\">.<\/span><span class=\"n\">register_actor<\/span><span class=\"p\">(<\/span><span class=\"n\">DemoActor<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nd\">@app.get<\/span><span class=\"p\">(<\/span><span class=\"s2\">&#34;\/GetMyData&#34;<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"k\">def<\/span> <span class=\"nf\">get_my_data<\/span><span class=\"p\">():<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"k\">return<\/span> <span class=\"s2\">&#34;{&#39;message&#39;: &#39;myData&#39;}&#34;<\/span>\n<\/span><\/span><\/code><\/pre><\/div>"},{"title":"Dapr Python SDK integration with Flask","link":"https:\/\/docs.dapr.io\/developing-applications\/sdks\/python\/python-sdk-extensions\/python-flask\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/docs.dapr.io\/developing-applications\/sdks\/python\/python-sdk-extensions\/python-flask\/","description":"<p>The Dapr Python SDK provides integration with Flask using the <code>flask-dapr<\/code> extension.<\/p>\n<h2 id=\"installation\">Installation<\/h2>\n<p>You can download and install the Dapr Flask extension with:<\/p>\n\n\n\n\n\n\n<ul class=\"nav nav-tabs\" id=\"tabs-0\" role=\"tablist\">\n <li class=\"nav-item\">\n <button class=\"nav-link active\"\n id=\"tabs-00-00-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#tabs-00-00\" role=\"tab\"\n data-td-tp-persist=\"stable\" aria-controls=\"tabs-00-00\" aria-selected=\"true\">\n Stable\n <\/button>\n <\/li><li class=\"nav-item\">\n <button class=\"nav-link\"\n id=\"tabs-00-01-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#tabs-00-01\" role=\"tab\"\n data-td-tp-persist=\"development\" aria-controls=\"tabs-00-01\" aria-selected=\"false\">\n Development\n <\/button>\n <\/li>\n<\/ul>\n\n<div class=\"tab-content\" id=\"tabs-0-content\">\n <div class=\"tab-body tab-pane fade show active\"\n id=\"tabs-00-00\" role=\"tabpanel\" aria-labelled-by=\"tabs-00-00-tab\" tabindex=\"0\">\n <div class=\"highlight\"><pre tabindex=\"0\" class=\"chroma\"><code class=\"language-bash\" data-lang=\"bash\"><span class=\"line\"><span class=\"cl\">pip install flask-dapr\n<\/span><\/span><\/code><\/pre><\/div>\n <\/div>\n <div class=\"tab-body tab-pane fade\"\n id=\"tabs-00-01\" role=\"tabpanel\" aria-labelled-by=\"tabs-00-01-tab\" tabindex=\"0\">\n <div class=\"alert alert-warning\" role=\"alert\">\n<h4 class=\"alert-heading\">Note<\/h4>\n<pre><code>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 &lt;code&gt;dapr-dev&lt;\/code&gt; package.\n<\/code><\/pre>\n<\/div>\n<div class=\"highlight\"><pre tabindex=\"0\" class=\"chroma\"><code class=\"language-bash\" data-lang=\"bash\"><span class=\"line\"><span class=\"cl\">pip install flask-dapr-dev\n<\/span><\/span><\/code><\/pre><\/div>\n <\/div>\n<\/div>\n\n<h2 id=\"example\">Example<\/h2>\n<div class=\"highlight\"><pre tabindex=\"0\" class=\"chroma\"><code class=\"language-python\" data-lang=\"python\"><span class=\"line\"><span class=\"cl\"><span class=\"kn\">from<\/span> <span class=\"nn\">flask<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Flask<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"kn\">from<\/span> <span class=\"nn\">flask_dapr.actor<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">DaprActor<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"kn\">from<\/span> <span class=\"nn\">dapr.conf<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">settings<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"kn\">from<\/span> <span class=\"nn\">demo_actor<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">DemoActor<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"n\">app<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Flask<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"s1\">&#39;<\/span><span class=\"si\">{<\/span><span class=\"n\">DemoActor<\/span><span class=\"o\">.<\/span><span class=\"vm\">__name__<\/span><span class=\"si\">}<\/span><span class=\"s1\">Service&#39;<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Enable DaprActor Flask extension<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"n\">actor<\/span> <span class=\"o\">=<\/span> <span class=\"n\">DaprActor<\/span><span class=\"p\">(<\/span><span class=\"n\">app<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Register DemoActor<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"n\">actor<\/span><span class=\"o\">.<\/span><span class=\"n\">register_actor<\/span><span class=\"p\">(<\/span><span class=\"n\">DemoActor<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Setup method route<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"nd\">@app.route<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;\/GetMyData&#39;<\/span><span class=\"p\">,<\/span> <span class=\"n\">methods<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"s1\">&#39;GET&#39;<\/span><span class=\"p\">])<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"k\">def<\/span> <span class=\"nf\">get_my_data<\/span><span class=\"p\">():<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"k\">return<\/span> <span class=\"p\">{<\/span><span class=\"s1\">&#39;message&#39;<\/span><span class=\"p\">:<\/span> <span class=\"s1\">&#39;myData&#39;<\/span><span class=\"p\">},<\/span> <span class=\"mi\">200<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\">\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"c1\"># Run application<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"><span class=\"k\">if<\/span> <span class=\"vm\">__name__<\/span> <span class=\"o\">==<\/span> <span class=\"s1\">&#39;__main__&#39;<\/span><span class=\"p\">:<\/span>\n<\/span><\/span><span class=\"line\"><span class=\"cl\"> <span class=\"n\">app<\/span><span class=\"o\">.<\/span><span class=\"n\">run<\/span><span class=\"p\">(<\/span><span class=\"n\">port<\/span><span class=\"o\">=<\/span><span class=\"n\">settings<\/span><span class=\"o\">.<\/span><span class=\"n\">HTTP_APP_PORT<\/span><span class=\"p\">)<\/span>\n<\/span><\/span><\/code><\/pre><\/div>"}]}}