2017-02-15 1 views
0

Tout d'abord, je voudrais dire que je suis nouveau dans senecajs.Seneca-web timeout configuration

Je suis en train de tester cette configuration.

J'ai configuré le microservice Senecjs fonctionnant sur le port 9007, qui exécute et gère correctement la requête. Lorsque je demande ce service directement, je reçois une réponse après cca 10s (il s'agit d'une requête pour les données oracle db).

Mais quand je demande pour les mêmes données, mais à travers le Hapi + Sénèque Web Je reçois cette erreur: "statusCode": 504, "erreur": "Gateway Time-out"

["client","invalid_origin",{"port":9007,"pin":"mc:bankgtw","pg":"mc:bankgtw","type":"web","id":"pg:mc:bankgtw,pin:mc:bankgtw,port:9007","role":"transport","hook":"client","plugin$":{"name":"client$"},"fatal$":true,"meta$":{"mi":"wbn8u45tb7uh","tx":"o3f8eyia3f4n","id":"wbn8u45tb7uh/o3f8eyia3f4n","pattern":"hook:client,role:transport,type:web","action":"(q1yytemztu3k)","plugin_name":"transport","plugin_tag":"-","prior":{"chain":[],"entry":true,"depth":0},"start":1487199713842,"sync":true},"tx$":"o3f8eyia3f4n","host":"0.0.0.0","path":"/act","protocol":"http","timeout":5555,"max_listen_attempts":11,"attempt_delay":222,"serverOptions":{}},{"kind":"res","res":null,"error":{"isBoom":true,"isServer":true,"output":{"statusCode":504,"payload":{**"statusCode":504,"error":"Gateway Time-out**","message":"Client request timeout"},"headers":{}}},"sync":true,"time":{"client_recv":1487199799177}}] 

A quelques secondes avant que microservice ne renvoie les données.

Et voici ma configuration:

const Hapi = require('hapi'); 
const Seneca = require('seneca'); 
const SenecaWeb = require('seneca-web'); 

const config = { 
    adapter: require('seneca-web-adapter-hapi'), 
    context: (() => { 
    const server = new Hapi.Server(); 
    server.connection({ 
     port: 3001, 
     routes: { 
      cors: true, 
      payload:{timeout:60000}, 
      timeout:{server: 60000, socket:90000} 
     } 
    }); 

    server.route({ 
     path: '/routes', 
     method: 'get', 
     handler: (request, reply) => { 
     const routes = server.table()[0].table.map(route => { 
      return { 
      path: route.path, 
      method: route.method.toUpperCase(), 
      description: route.settings.description, 
      tags: route.settings.tags, 
      vhost: route.settings.vhost, 
      cors: route.settings.cors, 
      jsonp: route.settings.jsonp, 
      server: server.info 
      } 
     }) 
     reply(routes) 
     } 
    }); 

    return server; 
    })() 
}; 

const seneca = Seneca({timeout: 99999}) 
    .use(SenecaWeb, config) 
    .use(require('./hapi_api.js')) 
    .client({ port:9007, pin:'mc:bankgtw' }) 
    .ready(() => { 
    const server = seneca.export('web/context')(); 
    server.start(() => { 
     server.log('server started on: ' + server.info.uri); 
    }); 
    }); 

ce que je fais mal ou ce délai d'attente est la cause?

+0

Probablement quelque part un rappel n'est pas invoqué. –

Répondre

0

J'ai eu le même problème, je l'ai corrigé, mais c'est TRES MAUVAISE PRATIQUE.

Accédez à 'transport.js' dans le dossier seneca-transport. Vous verrez 'timeout: 5555' Allez-y et changez ce que vous avez besoin.

Je ne suis pas sûr pourquoi cela n'obtient pas les valeurs par défaut USER. Au meilleur de ma connaissance, cela fait référence au délai d'attente du client. assurez-vous de toujours utiliser le délai d'expiration du serveur.