feat: add random delay
This commit is contained in:
@@ -286,6 +286,7 @@ export interface Task {
|
||||
envs: string
|
||||
retry_count: number
|
||||
retry_interval: number
|
||||
random_range: number
|
||||
languages: { name: string; version: string }[]
|
||||
agent_id: number | null
|
||||
enabled: boolean
|
||||
|
||||
@@ -327,10 +327,19 @@ async function save() {
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid grid-cols-1 sm:grid-cols-4 items-center gap-2 sm:gap-3">
|
||||
<Label class="sm:text-right text-sm">超时/清理</Label>
|
||||
<Label class="sm:text-right text-sm">随机延迟</Label>
|
||||
<div class="sm:col-span-3 flex items-center gap-2">
|
||||
<div class="flex items-center gap-1.5">
|
||||
<Input v-model.number="form.random_range" type="number" :min="0" :step="1" @input="form.random_range = Math.max(0, Math.floor(form.random_range || 0))" placeholder="0" class="w-20 h-9 text-sm" />
|
||||
<span class="text-sm text-muted-foreground whitespace-nowrap">秒</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid grid-cols-1 sm:grid-cols-4 items-center gap-2 sm:gap-3">
|
||||
<Label class="sm:text-right text-sm">超时清理</Label>
|
||||
<div class="sm:col-span-3 flex flex-wrap items-center gap-2">
|
||||
<div class="flex items-center gap-1.5">
|
||||
<Input v-model.number="form.timeout" type="number" placeholder="30" class="w-20 h-9 text-sm" />
|
||||
<Input v-model.number="form.timeout" type="number" :min="0" :step="1" @input="form.timeout = Math.max(0, Math.floor(form.timeout || 0))" placeholder="30" class="w-20 h-9 text-sm" />
|
||||
<span class="text-sm text-muted-foreground whitespace-nowrap">分钟</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-1.5">
|
||||
@@ -353,12 +362,12 @@ async function save() {
|
||||
<Label class="sm:text-right text-sm">失败重试</Label>
|
||||
<div class="sm:col-span-3 flex items-center gap-2">
|
||||
<div class="flex items-center gap-1.5">
|
||||
<Input v-model.number="form.retry_count" type="number" placeholder="0" class="w-16 h-9 text-sm" />
|
||||
<Input v-model.number="form.retry_count" type="number" :min="0" :step="1" @input="form.retry_count = Math.max(0, Math.floor(form.retry_count || 0))" placeholder="0" class="w-16 h-9 text-sm" />
|
||||
<span class="text-sm text-muted-foreground whitespace-nowrap">次</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-1.5 ml-2" v-if="form.retry_count && form.retry_count > 0">
|
||||
<span class="text-sm text-muted-foreground whitespace-nowrap">间隔</span>
|
||||
<Input v-model.number="form.retry_interval" type="number" placeholder="0" class="w-16 h-9 text-sm" />
|
||||
<Input v-model.number="form.retry_interval" type="number" :min="0" :step="1" @input="form.retry_interval = Math.max(0, Math.floor(form.retry_interval || 0))" placeholder="0" class="w-16 h-9 text-sm" />
|
||||
<span class="text-sm text-muted-foreground whitespace-nowrap">秒</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -572,11 +572,21 @@ async function save() {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid grid-cols-1 sm:grid-cols-4 items-center gap-2 sm:gap-3" v-if="selectedTriggerType === TRIGGER_TYPE.CRON">
|
||||
<Label class="sm:text-right text-sm">随机延迟</Label>
|
||||
<div class="sm:col-span-3 flex items-center gap-2">
|
||||
<div class="flex items-center gap-1.5">
|
||||
<Input v-model.number="form.random_range" type="number" :min="0" :step="1" @input="form.random_range = Math.max(0, Math.floor(form.random_range || 0))" placeholder="0" class="w-20 h-9 text-sm" />
|
||||
<span class="text-sm text-muted-foreground whitespace-nowrap">秒</span>
|
||||
</div>
|
||||
<p class="text-[11px] text-muted-foreground ml-1">开启后,任务将在定时时间点后的 0 ~ {{ form.random_range || 0 }} 秒内随机执行。</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid grid-cols-1 sm:grid-cols-4 items-center gap-2 sm:gap-3">
|
||||
<Label class="sm:text-right text-sm">超时/清理</Label>
|
||||
<Label class="sm:text-right text-sm">超时清理</Label>
|
||||
<div class="sm:col-span-3 flex flex-wrap items-center gap-2">
|
||||
<div class="flex items-center gap-1.5">
|
||||
<Input v-model.number="form.timeout" type="number" placeholder="30" class="w-20 h-9 text-sm" />
|
||||
<Input v-model.number="form.timeout" type="number" :min="0" :step="1" @input="form.timeout = Math.max(0, Math.floor(form.timeout || 0))" placeholder="30" class="w-20 h-9 text-sm" />
|
||||
<span class="text-sm text-muted-foreground whitespace-nowrap">分钟</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-1.5">
|
||||
@@ -609,12 +619,12 @@ async function save() {
|
||||
<Label class="sm:text-right text-sm">失败重试</Label>
|
||||
<div class="sm:col-span-3 flex items-center gap-2">
|
||||
<div class="flex items-center gap-1.5">
|
||||
<Input v-model.number="form.retry_count" type="number" placeholder="0" class="w-16 h-9 text-sm" />
|
||||
<Input v-model.number="form.retry_count" type="number" :min="0" :step="1" @input="form.retry_count = Math.max(0, Math.floor(form.retry_count || 0))" placeholder="0" class="w-16 h-9 text-sm" />
|
||||
<span class="text-sm text-muted-foreground whitespace-nowrap">次</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-1.5 ml-2" v-if="form.retry_count && form.retry_count > 0">
|
||||
<span class="text-sm text-muted-foreground whitespace-nowrap">间隔</span>
|
||||
<Input v-model.number="form.retry_interval" type="number" placeholder="0" class="w-16 h-9 text-sm" />
|
||||
<Input v-model.number="form.retry_interval" type="number" :min="0" :step="1" @input="form.retry_interval = Math.max(0, Math.floor(form.retry_interval || 0))" placeholder="0" class="w-16 h-9 text-sm" />
|
||||
<span class="text-sm text-muted-foreground whitespace-nowrap">秒</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -111,13 +111,13 @@ function clearAgentFilter() {
|
||||
}
|
||||
|
||||
function openCreate() {
|
||||
editingTask.value = { name: '', command: '', type: TASK_TYPE.NORMAL, schedule: '0 * * * * *', timeout: 30, work_dir: '', enabled: true, clean_config: '', envs: '' }
|
||||
editingTask.value = { name: '', command: '', type: TASK_TYPE.NORMAL, schedule: '0 * * * * *', timeout: 30, work_dir: '', enabled: true, clean_config: '', envs: '', random_range: 0 }
|
||||
isEdit.value = false
|
||||
showTaskDialog.value = true
|
||||
}
|
||||
|
||||
function openCreateRepo() {
|
||||
editingTask.value = { name: '', type: TASK_TYPE.REPO, schedule: '0 0 0 * * *', timeout: 30, enabled: true, clean_config: '', envs: '' }
|
||||
editingTask.value = { name: '', type: TASK_TYPE.REPO, schedule: '0 0 0 * * *', timeout: 30, enabled: true, clean_config: '', envs: '', random_range: 0 }
|
||||
isEdit.value = false
|
||||
showRepoDialog.value = true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user