2017-06-06 63 views
0

語境:動態的NodeJS服務裝載機和亞軍

我試圖爲通道,我主動上建幾個鬆弛鉤/通知服務,作爲 便宜溜冰 金融精明的人說我想,我想利用免費服務(跟蹤Heroku帳戶或類似產品),因此我希望能夠在單個實例上運行多個服務。

我已經創建了一個通用的runner,它應該基於一個配置,並能夠獲取一些節點模塊併爲它們提供配置設置。

我使用以下node_modules:

「自動加載」: 「^ 0.2.0」, 「節點的cron」: 「^ 1.2.0」, 「讀YAML 「: 「^ 1.1.0」

config.yml

foo: 
    cron: 1 * * * * 
    url: http://www.foo.com 
    team: 
    - 
     slackId: bar 
     bnetId: 1 
     eloId: 1 
    - 
     slackId: baz 
     bnetId: 2 
     eloId: 2 

app.js

const autoLoader = require('auto-loader'); 
const readYaml = require('read-yaml'); 
const cron = require('node-cron'); 

const services = autoLoader.load(__dirname +'/services') 

readYaml('config.yml', function(err, conf) { 

    if (err) throw err; 

    Object.keys(conf).forEach(function (key) { 

     console.log('Creating CRON for ' + key); 

     if(cron.validate(conf[key].cron)) {    

      console.log(conf[key].cron, '-> is valid cron'); 

      // the cron task below does not seem to fire ever 
      cron.schedule(conf[key].cron, function(){ 
       services[key](conf[key]); 
      }); 

     } else { 
      console.log('Cron invalid for::' + key) 
     } 

    }); 
}); 

服務/ foo.js

module.exports = function (config) { 
    console.log('foo entered!!'); 
    console.log(config) 
} 

問:

我缺少什麼?如果我刪除了cron時間表,我的假設如下:

要麼我在概念上忽略了一些關於運行進程在NodeJS中工作的時間(因爲這是我的第一個) ,或者我錯過了一個超級(不明顯)給我的bug。

如何使用不同的預定代碼段/任務在NodeJS中創建長時間運行的任務/進程?

回答

1

代碼本身按預期工作。這個問題似乎與cron的配置有關。

cron: 1 * * * *將在小時過後1分鐘運行。

cron: "*/1 * * * *"  # would run it every minute 
cron: "*/5 * * * *"  # would run it every 5 minutes 
cron: "*/10 * * * * *" # would run every 10 seconds