【发布时间】:2021-01-06 23:35:27
【问题描述】:
我正在尝试部署一个将定期执行代码的节点应用程序(我希望每 1-5 分钟执行一次)。此代码将对不同平台进行多次 API 调用,并路由一些轻量级 json 数据(主要是文本和数字)。
我希望使用 Heroku、Amazon EC2 或 Amazon Lambda 部署这个项目,并希望留在他们的免费套餐内,但我不确定我的代码将如何与他们的服务器交互。
如果我部署此代码以使用 setTimeout 运行,这是否意味着我要求服务器始终处于“开启”状态,而我基本上需要为 100% 的正常运行时间付费?我可以看到这是一个问题,因为 Heroku 每月仅提供 550 个免费小时,而 Amazon EC2 每月提供 750 个免费小时。
代码非常轻量级,应该只在短时间内运行,因此如果让服务器每天 24/7 天运行,而实际使用时间只有几秒钟,那将是一种耻辱。我怎样才能最好地部署此代码以定期运行?我可以在这里使用其他服务吗?
另外,下面是我的代码的基本结构。请让我知道是否有明显的我遗漏的东西可能是一个问题。
const axios = require('axios');
const asana = require('asana');
const { Dropbox } = require('dropbox');
function apiCallOne() {
...
}
function apiCallTwo() {
...
}
function runMyCode() {
apiCallOne();
apiCallTwo();
...
}
setTimeout(runMyCode, 1000);
【问题讨论】:
-
查看 AWS Lambda。您可以在需要它们并且它们不需要运行服务器时触发它们。注意冷启动。他们可能需要一些时间。
-
我将深入研究 AWS Lambda 并按计划触发它们。谢谢!
标签: node.js amazon-web-services heroku amazon-ec2 deployment