KS1*_*798 5 python node.js reactjs ethereum next.js
我正在开发一个使用 react、next-routing 和基本 node.js 服务器的以太坊应用程序。我想在特定路线上运行一个 python 脚本,声明分析是特定的,以便执行一些预测。我希望每次访问 claimAnalysis 路由时都执行脚本。
服务器.js
const express = require("express")();
const next = require("next");
const app = next({
dev: process.env.NODE_ENV !== "production"
});
const routes = require("./routes");
const handler = routes.getRequestHandler(app);
app.prepare().then(() => {
const server = express.use(handler);
server.listen(3000, (err) => {
if(err) throw err;
console.log("Server ready on localhost:3000");
});
});
Run Code Online (Sandbox Code Playgroud)
路由.js
const routes = require("next-routes")();
routes
.add("/insurance/new", "/insurance/new")
.add("/insurance/:address", "/insurance/show")
.add("/insurance/:address/claims", "/insurance/claims/index")
.add("/insurance/:address/claims/new", "/insurance/claims/new")
.add("/insurance/:address/claims/:id/claimAnalysis", "/insurance/claims/claimAnalysis");
module.exports = routes;
Run Code Online (Sandbox Code Playgroud)
如果我可以从运行 python 脚本的 claimAnalysis.js 文件中调用函数,请指导我。
如果您使用的是 Node 10+,则可以用来util.promisify
执行返回对象的 python 脚本Promise<{ stdout, stderr }>
。请参阅下面的示例:
const util = require('util');
const exec = util.promisify(require('child_process').exec);
// function to execute python script
async function executeScript(path) {
try {
const { stdout, stderr } = await exec(`python3 ${path}`);
console.log('stdout:', stdout);
console.log('stderr:', stderr);
} catch (e) {
console.error(e);
}
}
Run Code Online (Sandbox Code Playgroud)
现在让我们在您的路线中使用该函数:
app.get('/insurance/claims/claimAnalysis', async function (req, res) {
await executeScript();
res.send('claimAnalysis request completed');
...
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
604 次 |
最近记录: |