Heroku 上的计划工作人员
Posted
技术标签:
【中文标题】Heroku 上的计划工作人员【英文标题】:Scheduled worker on Heroku 【发布时间】:2016-10-26 19:09:42 【问题描述】:我正在开发这个在 Heroku 上按计划运行的组件,但我无法使其正常运行。我关注了this 和this 的帖子以使其正常工作。我设法根据heroku logs
在heroku 上运行计划任务。我遇到的问题是,如果我在模块中运行代码(我需要按计划运行)它不会运行 xray 模块,我不确定为什么会发生这种情况。
如果我根据此处附加的链接之一从 bin 文件夹运行代码,这是我没有模块的代码及其输出,这就是 heroku 运行计划任务时将执行的操作:
var Xray = require('x-ray');
// helpers
var x = Xray(
filters:
cleanPrice: function (value)
return typeof value === 'string' ? value.replace(/\r|\t|\n|€/g, "").trim() : value
,
whiteSpaces: function (value)
return typeof value === 'string' ? value.replace(/ +/g, ' ').trim() : value
);
console.log("START - Scraping categories...");
x('http://google.com', 'title')(function (err, title)
console.log(title) // Google
)
λ bin\node 初始化 开始 - 抓取类别... 谷歌
这是我在模块中的代码和输出
module.exports =
start: function ()
var Xray = require('x-ray');
// helpers
var x = Xray(
filters:
cleanPrice: function (value)
return typeof value === 'string' ? value.replace(/\r|\t|\n|€/g, "").trim() : value
,
whiteSpaces: function (value)
return typeof value === 'string' ? value.replace(/ +/g, ' ').trim() : value
);
console.log("START - Scraping categories...");
x('http://google.com', 'title')(function (err, title)
console.log(title) // Google
)
输出
λ bin\node 初始化 开始 - 抓取类别...
我错过了“Google”这个词。如果我将代码放在模块中,为什么会发生这种情况???
【问题讨论】:
【参考方案1】:问题出在实际任务中
#! /app/.heroku/node/bin/node
"use strict";
var app = require('../src/app.js');
function initScrape()
app.start();
initScrape();
process.exit(1); // tell node to exit (prevent promise)
通过添加process.exit(1);
,我阻止了任何要解决的承诺。这是 nodejs 停止执行所必需的。
【讨论】:
以上是关于Heroku 上的计划工作人员的主要内容,如果未能解决你的问题,请参考以下文章
Rails 6.1:Heroku 上的作业将使用 Async 而不是 Sidekiq