2017-06-15 4 views
0

ausführen Ich verwende Agenda zum Ausführen von Jobs in meiner Nodejs-Anwendung, unten ist meine agenda.js Datei für Agenda Config.Wie Task alle 5 Sekunden mit Agenda in Nodejs

var Agenda = require('agenda'); 

var connectionString = 'localhost:27017/csgo'; 
var agenda = new Agenda({db: { address: connectionString, collection: 'jobs' }}); 

require('./jobs/game_play')(agenda); 

module.exports = agenda; 

Below mein Skript ist, ein Spiel zu spielen alle 5 Sekunden laufen

module.exports = function(agenda) { 
    agenda.define('start new play', function(job, done) { 
    console.log('new play agenda'); 
    }); 

    agenda.on('ready', function() { 
    agenda.every('5 seconds', 'start new play'); 
    agenda.start(); 
    }); 

} 

Nach dem Ausführen meiner agenda.js Skript, unten ist meine Aufgabe, die in der Datenbank gespeichert wird,

{ "_id" : ObjectId("59423d0e4b9581f728af1b6a"), "name" : "start new play", "type" : "single", "data" : null, "priority" : 0, "repeatInterval" : "5 seconds", "repeatTimezone" : null, "lastModifiedBy" : null, "nextRunAt" : ISODate("2017-06-15T07:53:55.794Z"), "lockedAt" : ISODate("2017-06-15T07:53:50.789Z"), "lastRunAt" : ISODate("2017-06-15T07:53:50.794Z") } 

Statt 5 seconds läuft mein Job nach jedem 5 minutes, was das Problem sein kann.

+0

berücksichtigen müssen Haben Sie versucht, mit 'processEvery() '? Wenn Sie hier https://github.com/rschmukler/agenda nachschauen, sollten Sie "processEvery()" anstelle von "every()" wählen – Abrar

Antwort

0

Agenda-Modul basiert auf Human-Intervall-Modul (https://github.com/rschmukler/human-interval).

In der Dokumentation können Sie sehen, dass Sekunden unterstützt werden, aber das Minutenintervall, das Sie einstellen können, beträgt 1 Minute.

Sie sagen, dass Sekunden unterstützt werden, weil Sie das Intervall als "1 Minute und 30 Sekunden" einstellen können.

können Sie versuchen Intervall passieren, wie Cron-Format:

module.exports = function(agenda) { 
    agenda.define('start new play', function(job, done) { 
    console.log('new play agenda'); 
    }); 

    agenda.on('ready', function() { 
    agenda.every('*/5 * * * * *', 'start new play'); 
    agenda.start(); 
    }); 

} 

Es es nicht unterstützt wird würden Sie ein anderes Modul zu verwenden, wie https://www.npmjs.com/package/node-cron oder https://www.npmjs.com/package/node-schedule

Verwandte Themen