Tie*_*udt 4 heroku node.js firebase firebase-queue
我想在heroku的仅用于工作的dyno上部署NodeJS服务器。我尝试了几种方法,但总是会收到错误消息:
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
Run Code Online (Sandbox Code Playgroud)
我的服务器不需要提供文件或API。部署到Heroku的正确方法是什么?具体来说,仅将Firebase-queue实现部署到Heroku的正确方法是什么?
我的服务器专用于处理队列中的工作。它监视Firebase的位置并对更改做出反应。具体来说,它是一个firebase-queue实现,几乎是指南中给出的my-queue-worker.js的精确副本。
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);
});
Run Code Online (Sandbox Code Playgroud)
正如Yoni所说,第一个重要的部分是告诉Heroku您只需要后台工作人员而不是Web工作人员:
worker: node <path_to_your_worker>
Run Code Online (Sandbox Code Playgroud)
第二个重要部分是:Heroku将默认启动网络测功机。如果您的应用程序未绑定到接收网络流量的端口,则这将导致应用程序崩溃。要禁用Web dyno并防止崩溃,请从目录中的命令行运行以下命令:
$ heroku ps:scale web=0 worker=1
$ heroku ps:restart
Run Code Online (Sandbox Code Playgroud)
这应该可以解决问题!
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |