Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 1,163 Bytes
955ce73 e4e0e54 955ce73 5dfc565 652f343 5dfc565 e4e0e54 ce7f582 652f343 cd0e411 652f343 e4e0e54 cd0e411 43afa34 cd0e411 be15697 cd0e411 deae345 652f343 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import { getPendingVideos } from "./scheduler/getPendingVideos.mts"
import { processVideo } from "./scheduler/processVideo.mts"
import { sortPendingVideosByLeastCompletedFirst } from "./scheduler/sortPendingVideosByLeastCompletedFirst.mts"
export const main = async () => {
const videos = await getPendingVideos()
if (!videos.length) {
// console.log(`no job to process.. going to try in 200 ms`)
setTimeout(() => {
main()
}, 200)
return
}
console.log(`there are ${videos.length} pending videos`)
sortPendingVideosByLeastCompletedFirst(videos)
let somethingFailed = ""
await Promise.all(videos.map(async video => {
try {
const result = await processVideo(video)
return result
} catch (err) {
somethingFailed = `${err}`
// a video failed.. no big deal
return Promise.resolve(somethingFailed)
}
}))
if (somethingFailed) {
console.error(`one of the jobs failed: ${somethingFailed}, let's wait 5 seconds`)
setTimeout(() => { main() }, 5000)
} else {
console.log(`successfully worked on the jobs, let's immediately loop`)
setTimeout(() => { main() }, 50)
}
} |