Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Custom object serialization broken for orchestrator return values

Đang mở Phù hợp với người mới
#568 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

@andystaples đang làm issue này rồi.

Từ ngày 31/7/2026.

  • #569 của @hoesler — đã đóng, không merge
  • #620 của @andystaples — đang mở

Đánh giá

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

Hướng nghiên cứu

Bắt đầu tại azure/durable_functions/models/TaskOrchestrationExecutor.py, ở TaskOrchestrationExecutor.get_orchestrator_state_str(), và so sánh việc tuần tự hóa JSON của nó với các model hoặc entity khác được đề cập trong issue. Tái hiện orchestration bằng cách sử dụng ví dụ CustomResult và xác minh rằng có thể trả về một object có to_json() mà không gặp lỗi not-serializable.

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

Mô tả

bug fixed-in-v2 P2

🐛 Describe the bug
Azure Durable Functions Python SDK fails to serialize custom objects that implement a to_json() method when returning from orchestrator functions. The error "Object of type [CustomClass] is not JSON serializable" is raised.

🤔 Expected behavior
Custom objects implementing a to_json() method should be automatically serialized when returned from orchestrator functions.

☕ Steps to reproduce
Basic orchestration with custom return types.

  1. Create a custom class with to_json() and from_json() methods:
from dataclasses import dataclass

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

app = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@dataclass
class CustomResult():
  message: str
  success: bool = True

  def to_json(self):
      return {"message": self.message, "success": self.success}

  @classmethod
  def from_json(cls, data):
      return cls(message=data["message"], success=data["success"])

@app.orchestration_trigger(context_name="context")
def orchestrator_function(context: df.DurableOrchestrationContext):
  return CustomResult(message="Hello from orchestrator!", success=True)

@app.route(route="test", methods=["GET"])
@app.durable_client_input(client_name="client")
async def http_start_conversion(req: func.HttpRequest, client: df.DurableOrchestrationClient) -> func.HttpResponse:
  instance_id = await client.start_new(
      orchestration_function_name="orchestrator_function"
  )

  return client.create_check_status_response(req, instance_id)

  1. Execute the orchestration - it will fail with "Object of type CustomResult is not JSON serializable"

Environment: Running locally with
Azure Functions Core Tools Version: 4.1.0
azure-functions-durable: 1.3.2

Root cause: In TaskOrchestrationExecutor.get_orchestrator_state_str(), the code calls dumps without a default argument:
https://github.com/Azure/azure-functions-durable-python/blob/15ed958555b9410629f97cd7884d8783cb0e460e/azure/durable_functions/models/TaskOrchestrationExecutor.py#L284

But should call:
json.dumps(self._data, default=_serialize_custom_object) as in other models or entities.

⚡If deployed to Azure
Didn't test yet. Since the bug is in the Python SDK code itself, I expect the same issue to occur.

Ngôn ngữ chính
Python
Star
157
Fork
70
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của Azure/azure-functions-durable-python

Tất cả issue của Azure/azure-functions-durable-python

Issue tương tự

Thêm issue về Python

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.