quickstarts/configuration/python/sdk/order-processor/app.py

44 lines
1.5 KiB
Python

import asyncio
import json
import threading
import time
import logging
from dapr.clients import DaprClient
from dapr.clients.grpc._response import ConfigurationResponse
logging.basicConfig(level=logging.INFO)
DAPR_CONFIGURATION_STORE = 'configstore'
CONFIGURATION_KEYS = ['orderId1', 'orderId2']
with DaprClient() as client:
# Get config items from the config store
for key in CONFIGURATION_KEYS:
resp = client.get_configuration(store_name=DAPR_CONFIGURATION_STORE, keys=[key], config_metadata={})
print(f"Configuration for {key} : {resp.items[key]}", flush=True)
def handler(id: str, resp: ConfigurationResponse):
for key in resp.items:
print("Configuration update {'"+key+"' : {'value': '"+ resp.items[key].value +"'}}", flush=True)
async def subscribe_config():
with DaprClient() as d:
# Subscribe to configuration for keys {orderId1,orderId2}.
id = d.subscribe_configuration(store_name=DAPR_CONFIGURATION_STORE, keys=CONFIGURATION_KEYS,
handler=handler, config_metadata={})
print("Subscription ID is", id, flush=True)
time.sleep(20)
# Unsubscribe from configuration
isSuccess = d.unsubscribe_configuration(store_name=DAPR_CONFIGURATION_STORE, id=id)
if isSuccess == True:
print("App unsubscribed from config changes", flush=True)
else:
print("Error unsubscribing from config updates", flush=True)
asyncio.run(subscribe_config())