6

在使用 heroku redis 插件在 heroku 上运行 kue-scheduler 时,虽然我可以让 kue 作业工作,但似乎 kue-scheduler 需要在 heroku redis 环境中不允许的某些 redis 配置。有没有人在 Heroku 环境中成功运行 kue-scheduler。这是我的 index.js 文件的开头:

var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var path = require('path');

var kue = require('kue-scheduler')
var queue = kue.createQueue({redis:
        'redis://h:***************@ec2-**-19-83-130.compute-1.amazonaws.com:23539'
        });

var job = queue.create('test', {
    title: 'Hello world'
  , to: 'j@example.com'
  , template: 'welcome-email'
}).save( function(err){
   if( !err ) console.log( job.id );
});

job.log('$Job %s run', job.id);

queue.every('30 seconds', job);

queue.process('test', function(job, done){
  test_function(job.data.title, done);
});

function test_function(title, done) {
  console.log('Ran test function with title %s', title)
  // email send stuff...
  done();
}

这是错误。

2016-07-21T00:46:26.445297+00:00 app[web.1]: /app/node_modules/parse-server/lib/ParseServer.js:410
2016-07-21T00:46:26.445299+00:00 app[web.1]:             throw err;
2016-07-21T00:46:26.445300+00:00 app[web.1]:             ^
2016-07-21T00:46:26.445417+00:00 app[web.1]: ReplyError: ERR unknown command 'config'
2016-07-21T00:46:26.445419+00:00 app[web.1]:     at parseError (/app/node_modules/redis-parser/lib/parser.js:161:12)
2016-07-21T00:46:26.445420+00:00 app[web.1]:     at parseType (/app/node_modules/redis-parser/lib/parser.js:222:14)
2016-07-21T00:46:26.466188+00:00 app[web.1]:

问题是 heroku redis 不允许在其 redis 基础设施上配置选项,据我所知。

如果有人成功了,感谢任何建议。

4

2 回答 2

5

设法通过以下方式解决了这个问题:

var queue = kue.createQueue(
                {redis: 'redis://xxxxxxxxxxxxx@ec2-50-19-83-130.compute-1.amazonaws.com:23539',
                 skipConfig: true
                });

只需要skipConfig参数

于 2016-07-22T11:40:57.780 回答
3

我遇到了同样的问题,无法继续kue-scheduler工作Heroku-Redis。为了解决这个问题,我改用 Heroku Add-on Redis Cloud

这允许您设置在常规插件notify-keyspace-events中不可修改的所需 Redis 标志。Heroku-Redis要设置此标志:

  1. 添加 Redis Cloud heroku 插件
  2. 转到heroku设置页面
  3. 在配置变量中显示配置变量
  4. 复制REDISCLOUD_URL,应该是这样的redis://rediscloud:PASSWORD@xxx.redislabs.com:PORT_NUMBER
  5. 在终端输入redis-cli -h xxx.redislabs.com -p PORT_NUMBER -a PASSWORD变量来自REDISCLOUD_URL
  6. 连接好后输入config set notify-keyspace-events Ex
  7. 您可以通过输入 config get notify-keyspace-events 来验证它是否设置正确
  8. REDISCLOUD_URL确保在调用时更新您的 JavaScript 代码以指向您的新代码kue.createQueue()

感谢@josephktcheung 在这里所做的工作:https ://github.com/lykmapipo/kue-scheduler/issues/46

于 2017-02-01T15:08:33.620 回答