Есть приложение на node.js + express 4.0. Внутри приложения есть парсер, который должен постоянно запускаться через определенный промежуток времени ( предположим 5 минут).
Как реализовать это на node.js?
P.S Первой мыслью было просто обернуть вызов парсера в setTimeout, но не уверен что это удачное решение.
1. Crontab: */5 * * * * /script.sh а в скрипте запускаете node script.js
2. Делаете require('child_process').fork('script.js'); и уже в script.js делаете setTimeout
3. Применяете готовые решения из npm, например node-schedule, node-crontab
В отличие от setTimeout, setInterval может как раз быть источником проблем, т.к. запустит код вне зависимости от того отработал ли предыдущий вызов или нет.
setTimeout в отдельном потоке (через fork) значительно надежнее, потому, что в основном потоке может происходить много всего, обработка HTTP запросов или TCP сокеты, там могут появляться исключения, что угодно, и тогда процесс свалится и setTimeout уже не вызовется.