MCPcopy Create free account
hub / github.com/Y80/bmm / executeCheckHostsTask

Function executeCheckHostsTask

src/controllers/BookmarkHostCheck.controller.ts:343–378  ·  view source on GitHub ↗
(input: {
  hostKeys: string[]
  initialTask: CheckHostsTaskValue
  saveTask: SaveCheckHostsTask
})

Source from the content-addressed store, hash-verified

341}
342
343async function executeCheckHostsTask(input: {
344 hostKeys: string[]
345 initialTask: CheckHostsTaskValue
346 saveTask: SaveCheckHostsTask
347}) {
348 const { hostKeys, initialTask, saveTask } = input
349 let checked = initialTask.checked
350 const proxyUrl = await SiteSettingController.getProxyUrl()
351
352 try {
353 await runConcurrent(hostKeys, CHECK_HOST_CONCURRENCY, async (hostKey) => {
354 try {
355 await BookmarkHostCheckController.checkHost(hostKey, { timeout: CHECK_HOST_TIMEOUT, proxyUrl })
356 } catch {
357 // 单个 Host 的异常不应让整批任务卡住;可解析 Host 的网络失败会在 checkHost 内落库。
358 }
359 checked += 1
360 await saveTask({
361 ...initialTask,
362 checked,
363 })
364 })
365 await saveTask({
366 ...initialTask,
367 checked,
368 finishedAt: new Date().toISOString(),
369 })
370 } catch (error) {
371 await saveTask({
372 ...initialTask,
373 checked,
374 finishedAt: new Date().toISOString(),
375 errorMessage: error instanceof Error ? error.message : '检测任务执行失败',
376 })
377 }
378}
379
380async function startCheckHostsTask(input: {
381 getRunningTask: () => Promise<CheckHostsTaskValue | null>

Callers 1

startCheckHostsTaskFunction · 0.85

Calls 1

runConcurrentFunction · 0.85

Tested by

no test coverage detected