每隔很短的时间更新快递服务器上的操作

时间:2018-10-26 11:12:09

标签: node.js mongodb express ethereum

我目前正在开发一个基于以太坊区块链的赌博网站。由于记录赌徒的所有下注非常复杂(因为通过与区块链直接交互,他们甚至无需访问网站就可以下注),因此得出结论,我需要在服务器上每运行0.5个函数- 1分钟,然后下载来自区块链的所有新赌注,并将它们隐藏在我的数据库中(是的,我也需要将其保存在我的数据库中)。

我对所有这些后端东西都没有太多的经验,我读过某个地方,我可以在服务器上使用setInterval(30 seconds)函数并在服务器启动时运行它。但这是一个真实的选择吗?人们甚至会做这样的事情吗?每30秒运行一次无限功能会阻塞整个服务器吗?

1 个答案:

答案 0 :(得分:0)

我已经做了很多次类似的事情而没有问题。事件将仅排队并根据需要运行。但是,请注意以下一件事:

const timeout = 1000;
setInterval(() => {
    // some process that takes longer than timeout
}, timeout);

当您编写这样的内容时,即使第一个操作尚未完成,setInterval也会在超时时间后再次运行。这很容易导致您阻塞线程。相反,我更喜欢使用setTimeout实现此目的:

const timeout = 1000;
const withTimeout = () => {
    // some process that takes longer than timeout
    setTimeout(withTimeout, 1000);
}

这样,只有在第一次执行运行之后,您对withTimeout的第二次调用才会排队。使用这种机制,您不必严格按照每个超时周期进行操作,而是在最后一个周期之后超时