【问题标题】:SetTimeout or use database to track next function trigger?SetTimeout 或使用数据库来跟踪下一个函数触发器?
【发布时间】:2018-06-07 12:24:35
【问题描述】:

我有一个应用程序,我在其中更新来自各种 API 的数据并将其存储在本地。每个 API 中的数据以不同的时间间隔更新……3 秒、15 秒和 30+ 秒。

目前,我正在更新每个 API,然后设置 setTimeout 来安排下一次更新。它可以工作...但这是最优的吗?

我考虑的另一个选项是在我的数据库模型中包含一个名为 nextUpdate 的字段,该字段接受一个数字(Unix 时间戳),然后每秒查询一次数据库以查找任何计划使用猫鼬更新的对象,比如.find({ nextUpdate: { $gt: Date.now() / 1000 })。我担心这会导致太多不必要的调用(坦率地说,这是我的第一个应用程序,所以我不知道每秒有多少 mongo 请求被认为太多了)。我目前使用 Mlab 作为我的数据库主机。

那么你会继续使用 setTimeout 吗?我上面提出的数据库刷新选项?还是其他解决方案?

提前感谢您的时间和建议。

【问题讨论】:

  • 我自己的观点是,如果最终用户不必能够随意更改间隔,或者如果数据不必长期存储,那么使用数据库是矫枉过正的。在代码中将其保留为常量。或者配置文件。除非您必须能够说链接 A 每 17 秒刷新一次,从现在起 5 年。
  • 谢谢 - 绝对是每个 API 的恒定刷新间隔。很高兴听到我可能第一次就做对了!

标签: javascript node.js mongodb mongoose settimeout


【解决方案1】:

我会继续使用第一种方法,尽管setInterval 在这里更合适。

第二种方法似乎只有缺点,除非我错过了什么?

(我本来想将此作为评论发布,但还不能发布 cmets)

【讨论】:

  • 谢谢!我来看看 setInterval。
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
相关资源
最近更新 更多