@amenov
Full-stack developer

Как реализовать отложенные задачи в Node.js?

Всем привет!
У меня такая задача:
Человек выкладывает заявку на какое то время и в конце времени к примеру через 3 часа она должна автоматически вызвать определённый callback по времени и передать туда параметры. Это нужно для того чтобы я мог сделать автовыбор победителя.

Можете подсказать что лучше использовать? Также общий принцип как это сделать на Node.js.
В Laravel встроены очереди и поэтому там не было вопросов
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 3
@bqio
https://github.com/bqio
Каждые N секунд проверять стек ваших заявок. Если системное время больше, чем время указанное в заявке, то вызывать коллбек с этой заявкой и удалять ее из стека, иначе ничего не делать.
Ответ написан
SagePtr
@SagePtr
Еда - это святое
Если на чистой NodeJS, то можно тупо вешать setTimeout. Но иметь ввиду, что при перезагрузке сервера задания не сохранятся, потому если важна сохранность - то класть копию куда-нибудь в БД или на диск, а при выполнении удалять оттуда или помечать как выполненные, при запуске сервера - возобновлять те, которые не были выполнены.
Ответ написан
@d-sem
В БД положить и скриптом по крону или таймауту интервалу проверять прошло ли 3 часа с момента добавления.

Или использовать очереди с задержкой. Что-то вроде
https://habr.com/ru/post/318118/
https://www.rabbitmq.com/blog/2015/04/16/schedulin...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы