我正在尝试构建一个工作流系统,它将处理一系列的任务&延迟。可以从正在运行的工作流中更改或删除延迟。
在一系列任务中做更长时间延迟的更好方法是什么?(大约3-4个月)。现在有两种方法绕着我的头:
现在,我不知道如何更好地做这件事,而且还在研究。如果有类似的经历,请分享。
发布于 2019-01-02 10:59:49
可以将任务存储到数据库中,例如:
{
_id: String,
status: Enum,
executionTime: timestamp,
}当您声明一个新任务时,将一个新条目推入DB。
在服务器启动时,或者在声明新任务时,创建一个setTimeout,在必要时唤醒您的node.js。
优化
为了避免使用X setTimeout,需要执行的任务数为X。只保留一个setTimeout,等待时间等于要执行的最接近的任务。
例如,您有三个任务,一个必须在1小时内运行,一个在2小时内运行,一个在3小时内运行。使用1小时的setTimeout。当它被触发时,它将执行任务1,然后查看要重新运行的其余任务。
https://stackoverflow.com/questions/54004881
复制相似问题