VideoChain-API / src /main.mts
jbilcke-hf's picture
jbilcke-hf HF staff
small clean-up
955ce73
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)
}
}