【问题标题】:Deploy only worker dyno to heroku (for firebase-queue)仅将worker dyno部署到heroku(用于firebase-queue)
【发布时间】:2016-08-05 21:55:43
【问题描述】:

我想在 heroku 上的仅工作人员 dyno 上部署 NodeJS 服务器。我尝试了几种方法,但我总是得到错误:

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

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

我的服务器专用于处理队列中的工作。它监控 Firebase 位置并对更改做出反应。具体来说,它是一个 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);
});

【问题讨论】:

    标签: node.js heroku firebase firebase-queue


    【解决方案1】:

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

    worker: node <path_to_your_worker>
    

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

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

    这应该可以解决问题!

    【讨论】:

    • 对于将 Firebase 队列实施到应用引擎的任何帮助或类似示例?
    • 很遗憾没有
    • 感谢您的评论
    【解决方案2】:

    看起来您的 Procfile 包含“网络”进程类型。 您的 Procfile 应如下所示:

    worker: node <path_to_your_worker>
    

    【讨论】:

    • 谢谢,我以前试过。现在再次检查。结果 Heroku 会自动启动一个网络测功机。当端口未绑定时,它会自动将 web dynos 缩放为零。感谢您的帮助。
    猜你喜欢
    • 2015-11-17
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 2014-09-17
    • 2023-03-07
    • 2017-07-08
    • 2011-12-18
    • 1970-01-01
    相关资源
    最近更新 更多