Skip to content

Commit febabb0

Browse files
committed
Allow passing custom stub to execute operations
1 parent b4086fd commit febabb0

File tree

2 files changed

+45
-6
lines changed

2 files changed

+45
-6
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from typing import Callable
2+
3+
4+
class ProtoTaskHubSidecarServiceStub(object):
5+
"""A stub class roughly matching the TaskHubSidecarServiceStub generated from the .proto file.
6+
Used by Azure Functions during orchestration and entity executions to inject custom behavior,
7+
as no real sidecar stub is available.
8+
"""
9+
10+
def __init__(self):
11+
"""Constructor.
12+
"""
13+
self.Hello: Callable[..., None]
14+
self.StartInstance: Callable[..., None]
15+
self.GetInstance: Callable[..., None]
16+
self.RewindInstance: Callable[..., None]
17+
self.WaitForInstanceStart: Callable[..., None]
18+
self.WaitForInstanceCompletion: Callable[..., None]
19+
self.RaiseEvent: Callable[..., None]
20+
self.TerminateInstance: Callable[..., None]
21+
self.SuspendInstance: Callable[..., None]
22+
self.ResumeInstance: Callable[..., None]
23+
self.QueryInstances: Callable[..., None]
24+
self.PurgeInstances: Callable[..., None]
25+
self.GetWorkItems: Callable[..., None]
26+
self.CompleteActivityTask: Callable[..., None]
27+
self.CompleteOrchestratorTask: Callable[..., None]
28+
self.CompleteEntityTask: Callable[..., None]
29+
self.StreamInstanceHistory: Callable[..., None]
30+
self.CreateTaskHub: Callable[..., None]
31+
self.DeleteTaskHub: Callable[..., None]
32+
self.SignalEntity: Callable[..., None]
33+
self.GetEntity: Callable[..., None]
34+
self.QueryEntities: Callable[..., None]
35+
self.CleanEntityStorage: Callable[..., None]
36+
self.AbandonTaskActivityWorkItem: Callable[..., None]
37+
self.AbandonTaskOrchestratorWorkItem: Callable[..., None]
38+
self.AbandonTaskEntityWorkItem: Callable[..., None]

durabletask/worker.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from durabletask.internal.helpers import new_timestamp
2424
from durabletask.entities import DurableEntity, EntityLock, EntityInstanceId, EntityContext
2525
from durabletask.internal.orchestration_entity_context import OrchestrationEntityContext
26+
from durabletask.internal.proto_task_hub_sidecar_service_stub import ProtoTaskHubSidecarServiceStub
2627
import durabletask.internal.helpers as ph
2728
import durabletask.internal.exceptions as pe
2829
import durabletask.internal.orchestrator_service_pb2 as pb
@@ -629,7 +630,7 @@ def stop(self):
629630
def _execute_orchestrator(
630631
self,
631632
req: pb.OrchestratorRequest,
632-
stub: stubs.TaskHubSidecarServiceStub,
633+
stub: Union[stubs.TaskHubSidecarServiceStub, ProtoTaskHubSidecarServiceStub],
633634
completionToken,
634635
):
635636
try:
@@ -677,7 +678,7 @@ def _execute_orchestrator(
677678
def _cancel_orchestrator(
678679
self,
679680
req: pb.OrchestratorRequest,
680-
stub: stubs.TaskHubSidecarServiceStub,
681+
stub: Union[stubs.TaskHubSidecarServiceStub, ProtoTaskHubSidecarServiceStub],
681682
completionToken,
682683
):
683684
stub.AbandonTaskOrchestratorWorkItem(
@@ -690,7 +691,7 @@ def _cancel_orchestrator(
690691
def _execute_activity(
691692
self,
692693
req: pb.ActivityRequest,
693-
stub: stubs.TaskHubSidecarServiceStub,
694+
stub: Union[stubs.TaskHubSidecarServiceStub, ProtoTaskHubSidecarServiceStub],
694695
completionToken,
695696
):
696697
instance_id = req.orchestrationInstance.instanceId
@@ -723,7 +724,7 @@ def _execute_activity(
723724
def _cancel_activity(
724725
self,
725726
req: pb.ActivityRequest,
726-
stub: stubs.TaskHubSidecarServiceStub,
727+
stub: Union[stubs.TaskHubSidecarServiceStub, ProtoTaskHubSidecarServiceStub],
727728
completionToken,
728729
):
729730
stub.AbandonTaskActivityWorkItem(
@@ -736,7 +737,7 @@ def _cancel_activity(
736737
def _execute_entity_batch(
737738
self,
738739
req: Union[pb.EntityBatchRequest, pb.EntityRequest],
739-
stub: stubs.TaskHubSidecarServiceStub,
740+
stub: Union[stubs.TaskHubSidecarServiceStub, ProtoTaskHubSidecarServiceStub],
740741
completionToken,
741742
):
742743
if isinstance(req, pb.EntityRequest):
@@ -804,7 +805,7 @@ def _execute_entity_batch(
804805
def _cancel_entity_batch(
805806
self,
806807
req: Union[pb.EntityBatchRequest, pb.EntityRequest],
807-
stub: stubs.TaskHubSidecarServiceStub,
808+
stub: Union[stubs.TaskHubSidecarServiceStub, ProtoTaskHubSidecarServiceStub],
808809
completionToken,
809810
):
810811
stub.AbandonTaskEntityWorkItem(

0 commit comments

Comments
 (0)