Я никогда не решал проблему запуска асинхронной функции в запланированном задании, но я сделал обходной путь.Я сделал внутренний API, который выполнял функцию, и заставил запланированное задание вызвать внутренний API для запуска задачи.Это может или не может работать для вас.
Определен новый API в моем маршрутизаторе:
router.get('/refresh', (req, res, next) => {
//this is the function that I needed the scheduler to run.
utils.getData().then(response => {
res.status(200).json(response);
}).catch(err => {
res.status(500).json({
error: err
});
});
})
schedule_job.js:
const fetch = require('node-fetch');
async function run() {
try {
let res = await fetch(process.env.REFRESH_PATH);
result = await res.json();
console.log(result);
} catch (err) {
console.log(err);
}
}
run();
Конечно, вы должныустановите свой путь API в конфигурационном файле heroku.
Надеюсь, это вам поможет.