如何让一段代码每15分钟连续执行一次?

问题描述 投票:0回答:2

大家好,我正在 Node + Express 上运行一个 Web 服务器,由于某种原因,我的代码并不是每 10 分钟执行一次,尽管我显然在那里设置了 setInterval 函数。这只是我在 app.js 旁边的脚本文件(称为 serverScripts.js)中设置的 4 个代码之一,我使用两个节点 serverScripts.js 运行它并在其上使用了 permanent 模块,但它仍然不起作用

var APOD = (function() {
    setInterval(function() {
        async.waterfall([
            function Request(callback) {
                let apodUrl = 'https://api.nasa.gov/planetary/apod?api_key=';
                let api_key = '*censored*';
                request(apodUrl+api_key, function(err, apodData) {
                    if (err) throw err;
                    apodData = JSON.parse(apodData.body);
                    callback(null, apodData);
                });
            },
            function GetTableItems(apodData, callback) {
                let apodParams = { TableName: "APOD" }
                db.scan(apodParams, (err,apodTable) => {
                    if (err) throw err;
                    callback(null, apodData, apodTable);
                });
            },
            function CheckUniques(apodData, apodTable, callback) {
                let tempArr = [];
                for (let i = 0; i < apodTable.Items.length; i++) {
                    tempArr.push(apodTable.Items[i].title);
                }
                let IsItThere = _.includes(tempArr, apodData.title);
                if (!IsItThere) {
                    setTimeout(function() {
                        let putParams = {
                            TableName: 'APOD',
                            Item: {
                                "title": apodData.title,
                                "date": apodData.date,
                                "description": apodData.explanation,
                                "hdurl": apodData.hdurl,
                                "media_type": apodData.media_type,
                                "url": apodData.url,
                                "copyright": apodData.copyright
                            }
                        }
                        db.put(putParams, (err) => {
                            if (err) throw err;
                            console.log(`\nAdded APOD item: ---"${apodData.title}"--- to the database.\n`);
                        });
                    },1000);
                }
                else { console.log("No new APOD items."); }
                callback(null);
            }
            ]);
        APOD;
    },600000);
}());
javascript node.js express asynchronous forever
2个回答
1
投票

我认为根据你的问题 cron 是最好的匹配,你可以每 15 分钟设置一次 cron 。 https://www.npmjs.com/package/node-cron

var cron = require('node-cron');

cron.schedule('0 0/15 * 1/1 * ? *', function(){
  console.log('running a task every 15 minutes');
});

0
投票

enter code here
我该放在哪里, cron.schedule('0 0/15 * 1/1 * ? *', function(){
enter code here
console.log('每 15 分钟运行一次任务');
enter code here
});

在 RPT.conf 文件中

© www.soinside.com 2019 - 2024. All rights reserved.