Hyperledger fabric Hyperledger结构:从使用节点SDK编写的链代码调用Python脚本
我正在使用Hyperledger Fabric开发一个应用程序,其中用nodeJS编写的应用程序调用同样用nodeJS编写的链码函数。这个链码函数应该调用Python脚本,执行一些操作,并将结果写入链码函数。此链码函数应将Python脚本返回的结果存储在分类账上,并将成功存储状态返回给调用应用程序。 我尝试使用nodeJS提供的子流程模块以以下方式实现此目的-Hyperledger fabric Hyperledger结构:从使用节点SDK编写的链代码调用Python脚本,hyperledger-fabric,hyperledger-fabric-sdk-js,Hyperledger Fabric,Hyperledger Fabric Sdk Js,我正在使用Hyperledger Fabric开发一个应用程序,其中用nodeJS编写的应用程序调用同样用nodeJS编写的链码函数。这个链码函数应该调用Python脚本,执行一些操作,并将结果写入链码函数。此链码函数应将Python脚本返回的结果存储在分类账上,并将成功存储状态返回给调用应用程序。 我尝试使用nodeJS提供的子流程模块以以下方式实现此目的- async mergeModel(ctx, modelNumber1, modelNumber2) { console.info
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脚本。
有什么我不知道的吗。
谢谢
这是一种非常糟糕的做法,请不要做这种事情
影响事务执行。尝试在中执行python脚本
Nodejs AppServer,并在获得结果后调用链码
您可以使用包的效率要比nodejs更高。必须澄清的是,您是从链码中调用脚本的吗?这样做是非常糟糕的做法
> This chain code function should call a Python script, do something and
written the results to the chaincode function.