gpt4 book ai didi

node.js - Heroku - 延时函数

转载 作者:太空宇宙 更新时间:2023-11-04 01:45:34 25 4
gpt4 key购买 nike

我有一个函数,每分钟检查一次是否是上午 7:30,如果到了时间,它就会向我发送一条短信。

但是由于我上传到heroku并且我的时区不同,所以我必须调整前面的时间,如下所示:

setInterval(function() {
let date = new Date();
if(date.getHours() == 11 && date.getMinutes() == 30){
sendDaily()
}
}, 60000)

但是当我上传到 Heroku 时,我的手机上会随机收到警报。我还尝试使用 schedule 包来帮助解决此问题,但出现了相同的错误,该函数在应该运行时没有运行。我也尝试过更改 heroku 上的时区,但这没有帮助,因为当我输入我的城市/位置时,它仍然给出相同的默认时区时间。

最佳答案

Heroku 构建在 AWS 上,并在它认为合适的任何中心创建容器。这意味着您的应用程序可以在世界任何地方运行,如此 AWS infrastructure map 所示。 。话虽如此,在服务器上使用 new Date 会根据创建的服务器产生非常不同的结果,而您无法控制该结果。

如何解决这个问题?

您需要解耦new Date对操作系统的依赖。

选项

  1. 您可以使用返回一天中标准时间的 API,这将为所有 AWS 容器创建单一事实来源,无论它们位于何处。这是一个Example

  2. 假设所有 AWS 操作系统时钟均同步,您可以手动设置时区。您可以使用moment来做到这一点和 moment timezone

  3. 使用并非在世界各地随机创建的专用服务器。与任何权衡一样,如果您试图扩展,这会产生自己的问题,但它是一种选择。

关于node.js - Heroku - 延时函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51624919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com