fix: 手动执行不再受运行窗口限制(窗口只约束定时触发)——立即执行按钮在窗口外也可触发任务
This commit is contained in:
@@ -587,14 +587,10 @@ class TaskManager:
|
||||
return _next_run_time(job.schedule)
|
||||
|
||||
def run_job_now(self, job_id):
|
||||
"""立即执行任务(手动触发)。运行窗口外拒绝启动。"""
|
||||
"""立即执行任务(手动触发)。运行窗口只约束定时触发,手动执行不受限制。"""
|
||||
job = self.jobs.get(job_id)
|
||||
if not job:
|
||||
return {"ok": False, "error": "任务不存在"}
|
||||
if not _in_run_window(job.schedule):
|
||||
win = job.schedule.get("window") or {}
|
||||
return {"ok": False,
|
||||
"error": f"当前不在运行窗口内({win.get('start', '')}-{win.get('end', '')}),任务未启动"}
|
||||
# 在独立线程跑,不阻塞调用方
|
||||
t = threading.Thread(target=self._run_job, args=(job,), daemon=True)
|
||||
t.start()
|
||||
|
||||
@@ -1082,7 +1082,7 @@ async function saveTask(jobId){
|
||||
cron:buildCronFromFreq(),
|
||||
stop_cron:(parseInt(st[1])||0)+' '+(parseInt(st[0])||0)+' * * *'};
|
||||
}
|
||||
// 运行窗口:窗口外(定时触发 + 手动执行)不启动
|
||||
// 运行窗口:只约束定时触发(窗口外定时不启动),手动执行不受限制
|
||||
if(document.getElementById('f-window_enable').checked){
|
||||
schedule.window={
|
||||
start:document.getElementById('f-window_start').value||'09:00',
|
||||
|
||||
@@ -141,7 +141,7 @@ function openTaskModal(jobId){
|
||||
'<div class="form-group"><label>允许运行·开始</label><input type="time" class="form-control" id="f-window_start" value="'+esc(winStart)+'"></div>'+
|
||||
'<div class="form-group"><label>允许运行·结束</label><input type="time" class="form-control" id="f-window_end" value="'+esc(winEnd)+'"></div>'+
|
||||
'</div>'+
|
||||
'<div class="help" id="f-window_help" style="display:'+(win?'block':'none')+'">窗口外任务不会启动(定时触发和手动执行都受约束)。跨午夜示例:21:00-09:00 = 晚 9 点到次日早 9 点允许运行</div>'+
|
||||
'<div class="help" id="f-window_help" style="display:'+(win?'block':'none')+'">窗口只约束定时触发:窗口外定时不会启动,手动执行不受限制。跨午夜示例:21:00-09:00 = 晚 9 点到次日早 9 点允许运行</div>'+
|
||||
'<div class="form-row">'+
|
||||
'<div class="form-group"><label>重试次数</label><input type="number" class="form-control" id="f-retry_attempts" value="'+j.retry.max_attempts+'" min="1" max="10"></div>'+
|
||||
'<div class="form-group"><label>重试间隔(秒)</label><input type="number" class="form-control" id="f-retry_delay" value="'+j.retry.delay+'" min="10" max="3600"></div>'+
|
||||
|
||||
Reference in New Issue
Block a user