Custom object serialization broken for orchestrator return values
@andystaples arbeitet bereits daran.
Seit 31.7.2026.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 75/100
Rechercherichtung
Beginne in azure/durable_functions/models/TaskOrchestrationExecutor.py bei TaskOrchestrationExecutor.get_orchestrator_state_str() und vergleiche dessen JSON-Serialisierung mit den anderen im Issue erwähnten Modellen oder Entitäten. Reproduziere die Orchestrierung anhand des CustomResult-Beispiels und verifiziere, dass ein Objekt mit to_json() zurückgegeben werden kann, ohne dass der Fehler not-serializable auftritt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
🐛 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.
- Create a custom class with
to_json()andfrom_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)
- 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.
- Vorherrschende Sprache
- Python
- Sterne
- 157
- Forks
- 71
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus Azure/azure-functions-durable-python
-
Enhancement fixed-in-v2 P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Azure/azure-functions-durable-python#617 · 1 Kommentar ·
-
bug Debuggability fixed-in-v2 P2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Azure/azure-functions-durable-python#587 · 2 Kommentare · 1 Reaktion ·
-
bug fixed-in-v2 P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Azure/azure-functions-durable-python#475 · 1 Kommentar ·
-
Propagate FunctionInvocationId for single-instance and bulk purge requestsEvtl. vergeben @Fire162 hat das vor 2 Tagen übernommen. OffenNeeds: Triage :mag:
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 72/100
-
Enhancement fixed-in-v2 P3
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 62/100
Azure/azure-functions-durable-python#618 · 1 Kommentar ·
Alle Issues in Azure/azure-functions-durable-python
Ähnliche Issues
-
needs-area-label
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
Maintainer antworten meist innerhalb von 2 Tagen
-
enhancement good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
Official-Space-AI/OpenPhysGraspGen#114 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
changelog investigate
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
ramnes/notion-sdk-py#441 ·
-
qa_bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
NVIDIA-NeMo/Gym#5644 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
BUG: catalog database credentials printed to logs at startupEvtl. vergeben @cjboyle hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Maintainer antworten meist innerhalb von 1 Tag