Custom object serialization broken for orchestrator return values
@andystaples y travaille déjà.
Depuis le 31/7/2026.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 75/100
Piste de recherche
Commencez dans azure/durable_functions/models/TaskOrchestrationExecutor.py, au niveau de TaskOrchestrationExecutor.get_orchestrator_state_str(), et comparez sa sérialisation JSON avec celle des autres modèles ou entités mentionnés dans l’issue. Reproduisez l’orchestration à l’aide de l’exemple CustomResult et vérifiez qu’un objet avec to_json() peut être renvoyé sans que l’erreur not-serializable ne se produise.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
🐛 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.
- Langage dominant
- Python
- Étoiles
- 157
- Forks
- 71
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Azure/azure-functions-durable-python
-
Enhancement fixed-in-v2 P3
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Azure/azure-functions-durable-python#617 · 1 commentaire ·
-
bug Debuggability fixed-in-v2 P2
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Azure/azure-functions-durable-python#587 · 2 commentaires · 1 réaction ·
-
bug fixed-in-v2 P3
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Azure/azure-functions-durable-python#475 · 1 commentaire ·
-
Enhancement fixed-in-v2 P3
Difficulté 4/5 3-5 jours Accessibilité débutants 62/100
Azure/azure-functions-durable-python#618 · 1 commentaire ·
-
blocked bug fixed-in-v2 known-regression
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
Azure/azure-functions-durable-python#600 · 3 commentaires ·
Toutes les issues de Azure/azure-functions-durable-python
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Graphify-Labs/graphify#4524 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
topoteretes/cognee#5982 ·
Les mainteneurs répondent en général sous 1 jour
-
Patches of derivations with `__structuredAttrs` are ignoredPeut-être pris @KiaraGrouwstra l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 81/100
nix-community/vulnix#184 ·
-
New InternshipOuvertenew_internship
Difficulté 1/5 Moins d'une heure Accessibilité débutants 65/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
aws-samples/sample-per-model-bedrock#295 ·
Les mainteneurs répondent en général sous 1 jour