Как стать автором
Обновить

Комментарии 11

Зачем? Чем обычный cron не устраивает?

Здесь должна быть картинка с троллейбусом из буханки хлеба :)

Например, если nodejs приложение крутится в docker-контейнере, то так удобнее, чем обычный cron.

Тогда не мешало бы реализацию механизма блокировок написать, чтобы несколько инстансов одну задачу не запускали

Механизм контроля успешности выполнения...

Короче rabbitmq нужен )

Мне хватает postgres, select for update

Ну дальше уже от задачи зависит. Мне как раз нужно, чтобы несколько инстансов одну операцию запускали. Обхожусь очередями в редисе.

Вроде, тут описание узкоспецифичной библиотеки, которая есть только в ноде. То есть, статья заинтересует только тех, кто пользуется нодой и кому нужен крон в ней. Но примеры кода начинаются с самых азов создания директории для проекта. Если нужно было раздуть статью, можно было описать и установку разных операционок. Кажется, всю подготовку вплоть до установки самого пакета можно убрать под спойлер, тем более, что человек, который пользуется нодой, пакеты ставить точно умеет, ему достаточно подсказвть название и путь к документации на всякий случай.

Мне кажется, вся эта статья по сути может быть заменена ссылкой на документацию.

Именно так. Особенно позабавило вот это:

Вы можете остановить сервер с помощью CTRL+C (CONTROL+C).

То есть нам предлагают обёртку на cron, которая будет по расписанию выполнять задачи пока активна вкладка терминала, где запущен скрипт.

Ну-у, есть же tmux.

Node-schedule такой же простой и минималистичный, но хотя бы есть graceful shutdown из коробки. Мне кажется очень важно для подобных сервисов иметь graceful restart, иначе могут быть сайд эффекты в виде пропусков при деплое или тех. работах, для большей надежности лучше конечно шедулер выносить отдельно с общей БД на задачи, например agenda та же самая.

А что же автор умолчал о такой важной фиче, о которой в документации по node-cron не написано? Если в функции schedule указать не функцию, которая должна запускаться по таймеру, а путь до js файла, то по таймеру будет запускаться отдельный процесс, который будет запускать функцию task из этого файла? Т.е. задачи можно запускать вне текущего процесса, а в отдельном. Это может быть важно, когда главный поток(процесс) нагружается.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории