MCPcopy
hub / github.com/omkarcloud/botasaurus / runTask

Method runTask

js/botasaurus-server-js/src/task-executor.ts:485–602  ·  view source on GitHub ↗
(task: any)

Source from the content-addressed store, hash-verified

483 }
484
485 protected async runTask(task: any): Promise<void> {
486 const key = Server.isScraperBasedRateLimit ? task.scraper_name : task.scraper_type
487 const taskId = task.id
488 const scraperName = task.scraper_name
489 const parent_task_id = task.parent_task_id
490 const metadata = isNotEmptyObject(task.metadata) ? { metadata: task.metadata } : {}
491 let taskData = task.data
492
493 const fn = Server.getScrapingFunction(scraperName)
494 const { isAborted, cleanup } = this.createIsAborted(taskId)
495 const removeDuplicatesBy = Server.getRemoveDuplicatesBy(scraperName)
496
497 // Create PushDataWriter for pushData functionality
498 const onResultCountUpdate = this.createResultCountUpdater(taskId)
499 const pushDataWriter = new PushDataWriter(taskId, removeDuplicatesBy, onResultCountUpdate)
500 const pushData = pushDataWriter.push.bind(pushDataWriter)
501
502 // Track whether task resources have been released to prevent double-release
503 let released = false
504 const releaseTask = () => {
505 if (!released) {
506 this.decrementCapacity(key)
507 cleanup()
508 released = true
509 }
510 }
511
512 try {
513 const result = await fn(taskData, {
514 ...metadata,
515 taskId,
516 parentTaskId: parent_task_id,
517 isAborted,
518 pushData,
519 parallel: null,
520 cache: false,
521 beep: false,
522 raiseException: true,
523 closeOnCrash: true,
524 output: null,
525 createErrorLogs: false,
526 returnDontCacheAsIs: true,
527 })
528
529 let isResultDontCached = false
530 let processedResult = result
531 if (isDontCache(result)) {
532 isResultDontCached = true
533 processedResult = result.data
534 } else {
535 // Only omit metadata keys if caching will occur
536 if (Server.cache && task.metadata && isNotEmptyObject(task.metadata)) {
537 const metaDataKeys = new Set(Object.keys(task.metadata))
538 taskData = omitKeys(taskData, metaDataKeys)
539 }
540 }
541
542

Callers

nothing calls this directly

Calls 15

createIsAbortedMethod · 0.95
wasUsedMethod · 0.95
closeMethod · 0.95
getFilePathMethod · 0.95
getItemCountMethod · 0.95
reportTaskSuccessMethod · 0.95
reportTaskFailureMethod · 0.95
isNotEmptyObjectFunction · 0.90
isDontCacheFunction · 0.90
omitKeysFunction · 0.90

Tested by

no test coverage detected