首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一系列任务中,有什么更好的方法来延长延迟呢?

在一系列任务中,有什么更好的方法来延长延迟呢?
EN

Stack Overflow用户
提问于 2019-01-02 10:42:11
回答 1查看 32关注 0票数 0

我正在尝试构建一个工作流系统,它将处理一系列的任务&延迟。可以从正在运行的工作流中更改或删除延迟。

在一系列任务中做更长时间延迟的更好方法是什么?(大约3-4个月)。现在有两种方法绕着我的头:

  1. 预计算和节省延迟时间。设置一个调度程序,该调度程序将在特定时间间隔(可能是1分钟)之后反复检查延迟。这将产生大量的数据库查询,但延迟可以立即改变。
  2. 为延迟安排一项工作。这可以减少很多数据库查询,但问题在于维护和更改这些长期运行的作业的延迟。此外,这些作业需要在服务器崩溃或重新启动时存活下来。

现在,我不知道如何更好地做这件事,而且还在研究。如果有类似的经历,请分享。

EN

回答 1

Stack Overflow用户

发布于 2019-01-02 10:59:49

可以将任务存储到数据库中,例如:

代码语言:javascript
运行
复制
{
   _id: String,
   status: Enum,
   executionTime: timestamp,
}

当您声明一个新任务时,将一个新条目推入DB。

在服务器启动时,或者在声明新任务时,创建一个setTimeout,在必要时唤醒您的node.js。

优化

为了避免使用X setTimeout,需要执行的任务数为X。只保留一个setTimeout,等待时间等于要执行的最接近的任务。

例如,您有三个任务,一个必须在1小时内运行,一个在2小时内运行,一个在3小时内运行。使用1小时的setTimeout。当它被触发时,它将执行任务1,然后查看要重新运行的其余任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54004881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档