Ошибка аутентификации сеанса Jelastic API "не аутентифицирована (другой ключ сеанса)"

Я создал приведенный ниже скрипт для извлечения статистики из API Jelastic, чтобы я мог собирать статистику ресурсов за определенное время. Конечная цель - записать данные в электронную таблицу.

Ниже приведен мой код, который обрабатывает аутентификацию, а затем делает запрос GetSumStats,

Если я запускаю код, некоторое время ожидаемые результаты ожидаются.

{ 
  iops_used: 0,
  duration: 3600,
  cpumhz: 7,
  start: '',
  disk: 7857,
  mem: 725212,
  cpu: 24002,
  capacity: 9,
  net: { in_int: 96004, out_int: 96004, in_ext: 9181, out_ext: 9395 },
  chanksused: 7,
  nodeid: 'sum' 
}

Но в других случаях запрос завершается ошибкой.

{ result: 702,
  source: 'JEL',
  error: 'not authenticated (different session key)',
  stats: [] }

Это проблема времени или известная проблема? Может быть, скрипт слишком быстрый, и API еще не знает об идентификаторе сеанса? Вот почему я представил setTimeout

var sites               = require('./sites.json').sites,
    credentials         = require('./credentials.json'),
    Client              = require('node-rest-client').Client,
    util                = require('./util.js');

(function () { 
    "use strict";

    var client = new Client();
    var session;

    login();

    function login() {
        var args = {
            parameters: { 
                appid: sites[2].appId, 
                login: credentials.email,
                password: credentials.password
            }
        };

        client.registerMethod("login", "https://app.j.hostapi.co.uk/1.0/users/authentication/rest/signin", "GET");

        client.methods.login(args, function (data, response) {

            // parsed response body as js object
            data = util.parseResponse(data);

            session = data.session;
            console.log(session);

            // Tried to pause here in case it was too quick
            setTimeout(function() {
                getSumStats();
            }, 3000);


        });
    }

    function logout() {
        var args = {
            parameters: { 
                appid: sites[2].appId, 
                session: session
            }
        };

        client.registerMethod("logout", "https://app.j.hostapi.co.uk/1.0/users/authentication/rest/signout", "GET");

        client.methods.logout(args, function (data, response) {

            // parsed response body as js object
            data = util.parseResponse(data);

            console.log(data);
            // raw response
            //console.log(response);
        });
    }

    // Failure here
    function getSumStats() {
        var args = {
            parameters: { 
                domain: sites[2].domain, 
                session: session,
                duration: 3600
            }
        };

        client.registerMethod("getSumStats", "https://app.j.hostapi.co.uk/1.0/environment/control/rest/getsumstat", "GET");

        client.methods.getSumStats(args, function (data, response) {

            // parsed response body as js object
            data = util.parseResponse(data);
            console.log(data.stats);
            logout();
        });
    }



})();

1 ответ

Решение

Вы ограничены 1 сеансом одновременного входа в систему. Логин закрепляется IP / User Agent.

Если вам нужно создать несколько одновременных сеансов входа в систему, вы можете попробовать использовать уникальный UA для каждого сеанса, чтобы избежать конфликтов.

Другие вопросы по тегам