__app__/durable_functions_http_starter/__init__.py (18 lines of code) (raw):

import datetime import logging import re import azure.functions as func from azure.durable_functions import DurableOrchestrationClient DAY_FORMAT = "%Y-%m-%d" DEFAULT_DAY = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime(DAY_FORMAT) async def main(req: func.HttpRequest, starter: str) -> func.HttpResponse: client = DurableOrchestrationClient(starter) logging.info(f"Request url: {req.url}") base_url = re.search("(?P<url>https?://[^\s]+api)", req.url).group("url") function_name = req.route_params["function"] url_params = '&'.join(f'{k}={v}' for k, v in req.params.items()) uri = f'{base_url}/actions/{function_name}?{url_params}' instance_id = await client.start_new(orchestration_function_name=req.route_params["orchestrator"], instance_id=None, client_input=uri) logging.info(f"Started orchestration with ID = '{instance_id}'.") return client.create_check_status_response(req, instance_id)