5151
5252
5353class Task :
54- def __init__ (self , uuid : str , script : str , inputs : Args | None = None ) -> None :
54+ def __init__ (
55+ self , worker : "Worker" , uuid : str , script : str , inputs : Args | None = None
56+ ) -> None :
57+ self ._worker = worker
5558 self ._uuid = uuid
5659 self ._script = script
5760 self ._inputs = inputs
@@ -62,6 +65,9 @@ def __init__(self, uuid: str, script: str, inputs: Args | None = None) -> None:
6265 self .outputs = {}
6366 self .cancel_requested = False
6467
68+ def export (self , ** kwargs ):
69+ self ._worker .exports .update (kwargs )
70+
6571 def update (
6672 self ,
6773 message : str | None = None ,
@@ -96,6 +102,7 @@ def _run(self) -> None:
96102 try :
97103 # Populate script bindings.
98104 binding = {"task" : self }
105+ binding .update (self ._worker .exports )
99106 if self ._inputs is not None :
100107 binding .update (self ._inputs )
101108
@@ -184,6 +191,7 @@ class Worker:
184191 def __init__ (self ):
185192 self .tasks = {}
186193 self .queue : list [Task ] = []
194+ self .exports = {}
187195 self .running = True
188196
189197 # Flag this process as a worker, not a service.
@@ -223,7 +231,7 @@ def _process_input(self) -> None:
223231 script = request .get ("script" )
224232 inputs = request .get ("inputs" )
225233 queue = request .get ("queue" )
226- task = Task (uuid , script , inputs )
234+ task = Task (self , uuid , script , inputs )
227235 self .tasks [uuid ] = task
228236 if queue == "main" :
229237 # Add the task to the main thread queue.
0 commit comments