Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Впрочем, ваш бойлерплейт скорее не про демонизацию, а про очередь задач и воркеров (а демонизировать можно и с помощью pm2, отдав ему работу по деплою, горячей перезагрузке и мониторингу нагрузки).
Потому таки неясно, почему вы не выбрали архитектуру с шиной типа MQ
Т.е., точка отказа таким решением не устраняется всё равно, а воркеры получаются неабстрагированными от хранилища задач.
Задачи должны находиться в таблице MySQL. Это намного гибче и информативнее, чем использовать какой-нибудь MQ.
Зачем использовать bluebird, когда в требованиях packege.json 4-ая нода с нативными промисами?
https://github.com/petkaantonov/bluebird/tree/master/benchmark посмотрите, например.
Ну и https://github.com/nodejs/node/issues/3414.
Плюс в стандарте кое-чего не совсем гладко, а bluebird от него в этом месте отходит, и за счёт этого несколько выигрывает.
См. https://github.com/promises-aplus/promises-spec/issues/179 и https://github.com/promises-aplus/promises-spec/issues/183.
С другой стороны, переопределять глобальный Promise я бы не стал.
Я просто делаю const Promise = require('bluebird'); наверху каждого файла.
в их числе — авто-перезапуск при падении,
Реализация демонов на Node.js