Azure / Azure/azure-functions-durable-python

Worker failed to load Durable Entity function when binding a Storage Queue

Đang mở
#392 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
Enhancement fixed-in-v2 P3
Ngôn ngữ chính
Python
Star
157
Fork
70
Merge trung bình
2 ngày 10 giờ
Pull request đã merge (30 ngày)
2

Mô tả

🐛 **Describe the bug**
> I'm learning about Durable Entities , not sure if this is supported or not. I'm using counter sample provided [here](https://github.com/Azure/azure-functions-durable-python/tree/dev/samples/counter_entity) and trying to bind a Storage Queue . However worker complains about not finding the corresponding parameter:
```
[2022-07-22T15:02:30.124Z] Worker failed to load function: 'Counter' with function id: 'a80f6d9c-8814-4549-bc62-155546eaf880'.
[2022-07-22T15:02:30.125Z] Result: Failure
Exception: FunctionLoadError: cannot load the Counter function: the following parameters are declared in function.json but not in Python: {'outputQueueItem'}
```

🤔 **Expected behavior**
> What should have happened?
Worker is able to load Function

☕ **Steps to reproduce**
> What Durable Functions patterns are you using, if any?
HTTPTrigger > Orchestration > Entity

> Any minimal reproducer we can use?
https://github.com/enriqueayala/azure-function-counter.git

**_ _init.py_ _**
```
import logging
import json

import azure.functions as func
import azure.durable_functions as df

def entity_function(context: df.DurableEntityContext, outputQueueItem: func.Out[str]):
"""A Counter Durable Entity.
A simple example of a Durable Entity that implements
a simple counter.
Parameters
----------
context (df.DurableEntityContext):
The Durable Entity context, which exports an API
for implementing durable entities.
"""

current_value = context.get_state(lambda: 0)
operation = context.operation_name
if operation == "add":
amount = context.get_input()
current_value += amount
elif operation == "reset":
current_value = 0
elif operation == "get":
pass

context.set_state(current_value)
context.set_result(current_value)
outputQueueItem.set(current_value)

main = df.Entity.create(entity_function)
```
**function.json**
```
{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "context",
"type": "entityTrigger",
"direction": "in"
},
{
"type": "queue",
"direction": "out",
"name": "outputQueueItem",
"queueName": "outqueue",
"connection": "AzureWebJobsStorage"
}
]
}

```

> Are you running this locally or on Azure?
Locally

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với __init__.py và function.json của sample Counter đã tái hiện, sau đó theo dõi cách entry point entity_function được tải và cách binding outputQueueItem của nó được xác thực. Chạy reproducer cục bộ và so sánh việc tải function khi binding queue hiện diện; hoàn thành khi function Counter tải thành công với output Storage Queue được khai báo.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
backend
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
48/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.