2016-07-21 11 views
6

W uruchomionym programie kue-scheduler na heroku z wtyczką heroku redis, podczas gdy ja dostaję zadania kue do pracy, wydaje się, że kue-scheduler wymaga określonej konfiguracji redis nie dozwolonej w środowisko heroku redis. Czy ktokolwiek miał sukces z uruchomieniem programu kue-scheduler w środowisku Heroku? Oto początek mojego pliku index.js:Używanie programu kue-scheduler z ParseServer na Heroku

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: '[email protected]' 
    , 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(); 
} 

Tutaj jest błąd.

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]: 

Problem polega na tym, że heroku redis nie zezwala na opcje konfiguracyjne na jego infrastrukturze redis z tego co wiem.

Jeśli ktoś osiągnął sukces, jest wdzięczny za wszelkie sugestie.

+2

Ten problem szczególnie udało mi się rozwiązać poprzez: 'var Queue = kue.createQueue ({ Redis:„Redis: // x: XXXXXXXXXXX @ ec2-50-19-83-130. compute-1.amazonaws.com:23539 ', skipConfig: t rue } ); ' Jednak powtarzające się zadania nie wydają się działać. – silverdagger

+0

Czy musieliście również stworzyć "robotnicze" dyno, żeby cała instalacja działała? –

+0

Wydaje mi się, że zauważyłem niespójności z konfiguracją, którą stosowałeś z 'skipConfig: true'. Czy możesz zweryfikować zachowanie zgodnie z oczekiwaniami? –

Odpowiedz

5

udało się rozwiązać ten problem:

var queue = kue.createQueue(
       {redis: 'redis://[email protected]:23539', 
       skipConfig: true 
       }); 

wystarczy na skipConfig parametru

+0

Czy udało Ci się uzyskać powtarzające się zadania? Mam podobną konfigurację, brak błędów, ale żadne zadania nie są uruchamiane. – Tys

1

miałem ten sam problem i nie był w stanie uzyskać kue-scheduler pracy na Heroku-Redis. Aby rozwiązać problem, użyłem dodatku Heroku Add-on Redis Cloud.

Umożliwia to ustawienie wymaganej flagi Redis notify-keyspace-events, której nie można modyfikować na zwykłym dodatku Heroku-Redis. Aby ustawić tę flagę:

  1. Dodaj Redis Chmura Heroku dodatek
  2. idź do Heroku stronie ustawień
  3. Reveal Config Vars Zmienne Config
  4. Kopiowanie REDISCLOUD_URL, powinno być coś jak redis://rediscloud:[email protected]:PORT_NUMBER
  5. W terminalu wpisz redis-cli -h xxx.redislabs.com -p PORT_NUMBER -a PASSWORD ze zmiennymi od REDISCLOUD_URL
  6. Po podłączeniu wpisz config set notify-keyspace-events Ex
  7. Można sprawdzić, czy jest prawidłowo ustawione wprowadzając config się zawiadomić-KEYSPACE-events
  8. Upewnij się, aby zaktualizować swój kod JavaScript, żeby wskazać na nowe REDISCLOUD_URL Dzwoniąc kue.createQueue()

kredytowej @josephktcheung za ich pracę chociaż tutaj: https://github.com/lykmapipo/kue-scheduler/issues/46