node.js - 仅将 worker dyno 部署到 heroku(用于 firebase-queue)

标签 node.js heroku firebase firebase-queue

我想在 heroku 上的 worker-only dyno 上部署一个 NodeJS 服务器。我尝试了几种方法,但总是出现错误:

Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

我的服务器不需要提供文件或 API。部署到 Heroku 的正确方法是什么?具体来说,仅将 firebase-queue 实现部署到 Heroku 的正确方法是什么?

我的服务器专用于处理队列中的工作。它监视 Firebase 位置并对更改使用react。具体来说,它是一个 firebase-queue 实现,几乎是 my-queue-worker.js 的精确副本 as given in the guide

var Queue = require('firebase-queue');
var firebase = require('firebase');

firebase.initializeApp({
  serviceAccount: '{projectId: 'xx', clientEmail: 'yy', privateKey: 'zz'}',
  databaseURL: '<your-database-url>'
});

var ref = firebase.database().ref('queue');
var queue = new Queue(ref, function(data, progress, resolve, reject) {
  // Read and process task data
  console.log(data);

 // Do some work
 progress(50);

 // Finish the task asynchronously
  setTimeout(function() {
  resolve();
  }, 1000);
});

最佳答案

第一个重要的部分,正如 Yoni 所说,是告诉 Heroku 你只需要一个后台 worker 而不是网络 worker :

worker: node <path_to_your_worker>

第二个重要部分是:Heroku 默认会启动一个 web dyno。如果您的应用程序未绑定(bind)到接收网络流量的端口,这将导致应用程序崩溃。要禁用 web dyno 并防止崩溃,请从目录中的命令行运行以下命令:

$ heroku ps:scale web=0 worker=1
$ heroku ps:restart

这应该可以解决问题!

关于node.js - 仅将 worker dyno 部署到 heroku(用于 firebase-queue),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38343299/

相关文章:

javascript - node js中require模块的路径在windows中工作但在linux中不工作

ruby-on-rails - 在 Heroku 上使用更大的 dynos 和更多的 dynos 之间的权衡是什么

java错误: BUILD FAILURE when deploying on heroku

android - 在 flutter android 应用程序崩溃中添加一些 firebase 库后

node.js - Mongodb按日期聚合,带有空的daybins

node.js - 无法通过 npm 脚本同时更改目录

javascript - node.js http获取请求参数

php - 我可以将 heroku 连接到外部 MySQL 服务器吗?

ios - 使用 cocoapods 安装 GeoFire

ios - MongoDB 与 Firebase