我目前正在构建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