Azure / Azure/azure-functions-durable-python

create or get instance of orchestrator

未关闭
#137 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
Enhancement P3
主要语言
Python
星标
157
派生
70
平均合并
2 天 10 小时
30 天内合并 PR
2

描述

I was creating a orchestration that was waiting for three events (from EventGrid) and then calls another two activities and got it working, but noticed that my code is needlessly complex, this is what happens in my trigger (with EventHubTrigger), after creating a blob object with a order_id attribute, I need this code:
```python
try:
status = await client.get_status(blob.order_id)
instance_id = status.instance_id
except Exception:
instance_id = await client.start_new("Orchestrator", blob.order_id, None)
if instance_id:
await client.raise_event(instance_id, blob.file_type, True)
else:
logging.error("Could not start orchestrator for instance: %s", blob.order_id)
```

I would expect either the `client.start_new` call to either create a new one or get an existing one, or for there to be a something like a `get_or_start_new` function on client.

The reason I needed to do it like this is that I have a single input (EventGrid triggered by storage) and need to both start a orchestration and raise an event, I do have an instance_id I can use to align the different events to the same orchestrator instance but the fact that I can't just have this function call `start_new` three times is very unintuitive and hard to debug.

贡献指南

打开贡献指南

调研方向

首先阅读 issue 中提到的客户端方法:get_status、start_new 和 raise_event。定义当多个事件针对同一个 order_id 时,创建或获取操作应如何表现,然后验证生成的实例无需调用方执行 status-and-start 序列即可接收所请求的事件。

由索引模型根据 Issue 内容生成。

评估

技术栈
python
领域
api, backend
Issue 类型
功能
难度
5/5
预计耗时
一周以上
活跃度
停滞
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。