Я создаю веб-парсер, и я новичок в этом. Что он делает, так это то, что он очищает цены Amazon для URL-адреса, предоставленного пользователем, который затем отправляет электронное письмо, когда цена опускается ниже цены, установленной пользователем. Я использую SendGrid для отправки писем.
Однако у меня возник вопрос. Я хотел настроить автоматический запуск сценария каждый час или около того и отправлять электронное письмо, если цена окажется ниже. Проведя исследования в Интернете, я обнаружил, что node-cron может помочь мне в этом, и он помог. Однако это работает только тогда, когда мой скрипт работает в фоновом режиме.
Итак, мой главный вопрос заключается в том, что для запуска скрипта и отправки электронных писем мой скрипт должен действительно работать все время? Если нет, что я могу сделать?
Это мой файл cron. js. У меня также есть AmazonTracker. js, в котором есть код для отслеживания цены и отправки электронной почты.
const cron = require('node-cron');
let shell = require('shelljs');
const url = process.argv[2]
// minimum price for which user wants an alert
const minPrice = process.argv[3]
const emailID = process.argv[4];
// scheduled to run every second
cron.schedule("* * * * * *", function() {
console.log("running");
if(shell.exec(`node AmazonTracker.js ${url} ${minPrice} ${emailID}`).code !== 0){
console.log("Something went wrong");
}
})
Кроме того, я получаю эту ошибку при попытке запустить код для некоторых ссылок. Мой сценарий работает для некоторых ссылок и выдает эту ошибку для некоторых других. Если у кого есть предложения.
(node:4284) UnhandledPromiseRejectionWarning: Error: .wait() for #priceblock_dealprice timed out after 30000msec
at newDone (C:\Users\dtdan\node_modules\nightmare\lib\actions.js:545:9)
at Timeout._onTimeout (C:\Users\dtdan\node_modules\nightmare\lib\actions.js:578:5)
at listOnTimeout (internal/timers.js:549:17)
at processTimers (internal/timers.js:492:7)