簡體   English   中英

如何部署 Node.js 代碼以在不超過免費部署層的情況下按時間間隔運行

[英]How do I deploy Node.js code to run on an interval without exceeding free deployment tiers

我正在嘗試部署一個將定期執行代碼的節點應用程序(我希望每 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);

使用 EC2,您肯定會按資源的正常運行時間收費,無論您是否使用它。 雖然每月 750 小時免費小時基本上是每月 1 個免費層實例。

現在我推薦 Lambda 因為它似乎是一個非常簡單的代碼。 使用 Lambda,您每月有 1M 的免費請求和 400,000 GB 秒的計算時間。 . 但是 Lambda 本身無法按計划運行,您需要為此使用 AWS CloudWatch Events。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM