Hyperledger Fabric: вызов скрипта Python из цепочки кода, написанного с использованием Node SDK - PullRequest
0 голосов
/ 14 октября 2019

Я занимаюсь разработкой приложения с использованием Hyperledger Fabric, в котором приложение, написанное на nodeJS, вызывает функцию цепного кода, также написанную на nodeJS. Эта функция кода цепи должна вызывать скрипт Python, что-то делать и записывать результаты в функцию кода цепи. Эта функция цепочки кодов должна хранить результаты, возвращаемые скриптом Python в бухгалтерской книге, и возвращать статус успешного хранения обратно вызывающему приложению. Я попытался сделать это, используя дочерний модуль процесса, заданный nodeJS, следующим образом:

async mergeModel(ctx, modelNumber1, modelNumber2) {
    console.info('============= START : Merge Model ===========');
    const modelAsBytes1 = await ctx.stub.getState(modelNumber1); // get the model from chaincode state
    const modelAsBytes2 = await ctx.stub.getState(modelNumber2); // get the model from chaincode state

    if (!modelAsBytes1 || modelAsBytes1.length === 0) {
        throw new Error(`${modelNumber1} does not exist`);
    }
    if (!modelAsBytes2 || modelAsBytes2.length === 0) {
        throw new Error(`${modelNumber2} does not exist`);
    }
    const spawn = require('child_process').spawn;
    const pythonProcess = spawn('python',['mergeModel.py', modelAsBytes1, modelAsBytes2]);
    pythonProcess.stdout.on('data', (data) => {
        console.log(data);
    });
}

Сценарий python mergeModel.py хранится в том же каталоге, что и цепной код. Но это не вызывает сценарий Python, как ожидалось. Есть что-то, что я пропускаю. Благодарю.

1 Ответ

1 голос
/ 14 октября 2019
> This chain code function should call a Python script, do something and
  written the results to the chaincode function.

Это очень плохая практика, пожалуйста, никогда не делайте этого, так как это может повлиять на выполнение транзакции. Попробуйте выполнить ваш скрипт на Python в Nodejs AppServer, и как только вы получите результат, вызовите цепной код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...