11# coding=utf-8
2- from __future__ import annotations
32
43import random
54
@@ -37,7 +36,7 @@ def _get_active_trigger_tasks(trigger_id: str) -> list[dict]:
3736 )
3837
3938
40- def _deploy_daily (trigger : dict , trigger_tasks : list [dict ], setting : dict , trigger_id : str , func ) -> None :
39+ def _deploy_daily (trigger : dict , trigger_tasks : list [dict ], setting : dict , trigger_id : str ) -> None :
4140 from common .job import scheduler
4241
4342 times = setting .get ("time" ) or []
@@ -51,17 +50,17 @@ def _deploy_daily(trigger: dict, trigger_tasks: list[dict], setting: dict, trigg
5150 for task in trigger_tasks :
5251 job_id = f"trigger:{ trigger_id } :task:{ task ['id' ]} :daily:{ hour :02d} { minute :02d} "
5352 scheduler .add_job (
54- func ,
53+ ScheduledTrigger . execute ,
5554 trigger = "cron" ,
5655 hour = str (hour ),
5756 minute = str (minute ),
5857 id = job_id ,
59- kwargs = {"trigger" : trigger , "trigger_tasks " : trigger_tasks },
58+ kwargs = {"trigger" : trigger , "trigger_task " : task },
6059 replace_existing = True ,
6160 )
6261
6362
64- def _deploy_weekly (trigger : dict , trigger_tasks : list [dict ], setting : dict , trigger_id : str , func ) -> None :
63+ def _deploy_weekly (trigger : dict , trigger_tasks : list [dict ], setting : dict , trigger_id : str ) -> None :
6564 from common .job import scheduler
6665
6766 times = setting .get ("time" ) or []
@@ -87,18 +86,18 @@ def _deploy_weekly(trigger: dict, trigger_tasks: list[dict], setting: dict, trig
8786 for task in trigger_tasks :
8887 job_id = f"trigger:{ trigger_id } :task:{ task ['id' ]} :weekly:{ dow } :{ hour :02d} { minute :02d} "
8988 scheduler .add_job (
90- func ,
89+ ScheduledTrigger . execute ,
9190 trigger = "cron" ,
9291 day_of_week = dow ,
9392 hour = str (hour ),
9493 minute = str (minute ),
9594 id = job_id ,
96- kwargs = {"trigger" : trigger , "trigger_tasks " : trigger_tasks },
95+ kwargs = {"trigger" : trigger , "trigger_task " : task },
9796 replace_existing = True ,
9897 )
9998
10099
101- def _deploy_monthly (trigger : dict , trigger_tasks : list [dict ], setting : dict , trigger_id : str , func ) -> None :
100+ def _deploy_monthly (trigger : dict , trigger_tasks : list [dict ], setting : dict , trigger_id : str ) -> None :
102101 from common .job import scheduler
103102
104103 times = setting .get ("time" ) or []
@@ -126,18 +125,18 @@ def _deploy_monthly(trigger: dict, trigger_tasks: list[dict], setting: dict, tri
126125 for task in trigger_tasks :
127126 job_id = f"trigger:{ trigger_id } :task:{ task ['id' ]} :monthly:{ dom :02d} :{ hour :02d} { minute :02d} "
128127 scheduler .add_job (
129- func ,
128+ ScheduledTrigger . execute ,
130129 trigger = "cron" ,
131130 day = str (dom ),
132131 hour = str (hour ),
133132 minute = str (minute ),
134133 id = job_id ,
135- kwargs = {"trigger" : trigger , "trigger_tasks " : trigger_tasks },
134+ kwargs = {"trigger" : trigger , "trigger_task " : task },
136135 replace_existing = True ,
137136 )
138137
139138
140- def _deploy_interval (trigger : dict , trigger_tasks : list [dict ], setting : dict , trigger_id : str , func ) -> None :
139+ def _deploy_interval (trigger : dict , trigger_tasks : list [dict ], setting : dict , trigger_id : str ) -> None :
141140 from common .job import scheduler
142141
143142 unit = (setting .get ("interval_unit" ) or "" ).strip ()
@@ -158,10 +157,10 @@ def _deploy_interval(trigger: dict, trigger_tasks: list[dict], setting: dict, tr
158157 for task in trigger_tasks :
159158 job_id = f"trigger:{ trigger_id } :task:{ task ['id' ]} :interval:{ unit } :{ value_i } "
160159 scheduler .add_job (
161- func ,
160+ ScheduledTrigger . execute ,
162161 trigger = "interval" ,
163162 id = job_id ,
164- kwargs = {"trigger" : trigger , "trigger_tasks " : trigger_tasks },
163+ kwargs = {"trigger" : trigger , "trigger_task " : task },
165164 replace_existing = True ,
166165 ** {unit : value_i },
167166 )
@@ -179,9 +178,9 @@ def _remove_trigger_jobs(trigger_id: str) -> None:
179178 maxkb_logger .warning (f"remove job failed, job_id={ job .id } , err={ e } " )
180179
181180
182- @celery_app .task (name = ' celery:deploy_scheduled_trigger' )
183- def deploy_scheduled_trigger (trigger : dict , trigger_tasks : list [dict ], setting : dict , schedule_type : str , func ) -> None :
184- _remove_trigger_jobs (trigger ['id' ])
181+ @celery_app .task (name = " celery:deploy_scheduled_trigger" )
182+ def deploy_scheduled_trigger (trigger : dict , trigger_tasks : list [dict ], setting : dict , schedule_type : str ) -> None :
183+ _remove_trigger_jobs (trigger ["id" ])
185184
186185 deployers = {
187186 "daily" : _deploy_daily ,
@@ -194,7 +193,7 @@ def deploy_scheduled_trigger(trigger: dict, trigger_tasks: list[dict], setting:
194193 maxkb_logger .warning (f"unsupported schedule_type={ schedule_type } , trigger_id={ trigger ['id' ]} " )
195194 return
196195
197- fn (trigger , trigger_tasks , setting , trigger ['id' ], func )
196+ fn (trigger , trigger_tasks , setting , trigger ["id" ] )
198197
199198
200199class ScheduledTrigger (BaseTrigger ):
@@ -205,6 +204,23 @@ class ScheduledTrigger(BaseTrigger):
205204 @staticmethod
206205 def execute (trigger , ** kwargs ):
207206 n = random .randint (1 , 1_000_000_000 )
207+ trigger_task = kwargs .get ("trigger_task" )
208+ if not trigger_task :
209+ maxkb_logger .warning (f"unsupported task={ trigger_task } " )
210+ return
211+ source_type = trigger_task ["source_type" ]
212+
213+ if source_type == "APPLICATION" :
214+ from trigger .handler .impl .task .application_task import ApplicationTask
215+
216+ ApplicationTask .execute (trigger_task , ** kwargs )
217+ elif source_type == "TOOL" :
218+ from trigger .handler .impl .task .tool_task import ToolTask
219+
220+ ToolTask .execute (trigger_task , ** kwargs )
221+ else :
222+ maxkb_logger .warning (f"unsupported source_type={ source_type } , task_id={ trigger_task ['id' ]} " )
223+ return
208224
209225 maxkb_logger .info (f"scheduled trigger execute, trigger={ n } " )
210226
@@ -233,8 +249,7 @@ def deploy(self, trigger, **kwargs):
233249
234250 try :
235251 maxkb_logger .debug (f"get lock { lock_key } " )
236- deploy_scheduled_trigger .delay (trigger , trigger_tasks , setting , schedule_type , self .execute )
237-
252+ deploy_scheduled_trigger .delay (trigger , trigger_tasks , setting , schedule_type )
238253 finally :
239254 rlock .un_lock (lock_key )
240255
0 commit comments