如何为免费的heroku或openshift优化Nodejs 24/7 REST API应用

时间:2019-05-10 13:36:28

标签: node.js rest heroku redis openshift

我目前正在构建Nodejs API应用。基本上,它每隔T秒从交易所调用很少的报价器,然后提供一个端点,该端点将合并的json作为输出。我面临的问题是部署它。

许多云解决方案收费很高,因此我无法让该应用程序全天候运行24/7。但是,如果我停下来,那也将意味着数据丢失(我将构建另一个应用程序,获取此行情自动收录器,并将其存储在数据库中)。

例如,在Redhat openshift中,作为免费选项,该应用应在72小时内睡眠18小时。如果我的应用程序每5分钟睡眠4分钟,那么很容易就睡了大约57个小时。我的问题是,如何使我的应用程序做到这一点?

问题1:是否可以执行简单的set timeout函数调用?
第二季度:如果我必须为此使用后台工作人员,该怎么做?您能否用一个简单的例子来解释一下,如果可能的话,用redis说一下,而不用heroku或openshift?

我计划在Heroku免费计划或Openshift免费计划上尝试。

来源:为简洁起见,我仅包含主服务器内容。特别地,步骤4.1 Start Ticker是最后由settimeout函数调用的工作。

//1. Import
var express = require('express');
var path = require('path');
var routes = require('./routes/route.js');
var fs = require('fs'); // to clean up the file

//2. Initiate
var app = express();
var http = require('http').Server(app);


//3. Configure
app.use(express.static(path.join(__dirname, '../client/public')));
app.use(express.json())  // for POST body parser
app.set('views', path.join(__dirname, '../client/views'));
app.set("view engine","ejs");

//4. Setup Routing
app.get("/",routes.home);
app.get("/ticker",routes.ticker);


//4.1 Start Ticker
var ticker = require('./ticker/ticker.js');
var tickerCounter = 0;
function periodicTicker() 
{        
    ticker.go();
    ++tickerCounter;
    console.log("Ticker Count: " + tickerCounter);
} 


//5. Listen
var port = process.env.PORT || 8080;
var server = http.listen(port,
    function(request,response)
    {
        console.log(`Node Server started. Running at http://localhost:${port}/`);
    }
);

//6. Repeat ticker forever..
setInterval(periodicTicker, 2000);   //2 seconds

0 个答案:

没有答案