python - 使用下一个路由和 node.js 服务器从 React 调用 Python 脚本
问题描述
我正在开发一个使用 react、next-routing 和基本 node.js 服务器的以太坊应用程序。我想在特定路线上运行 python 脚本,具体来说是 claimAnalysis,以便执行一些预测。我希望每次访问 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");
});
});
路由.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;
如果我可以从运行 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);
}
}
现在让我们在您的路线中使用该功能:
app.get('/insurance/claims/claimAnalysis', async function (req, res) {
await executeScript();
res.send('claimAnalysis request completed');
...
})
推荐阅读
- excel - Excel函数打印输出选择范围如果不为空(不打印)
- html - CSS 类样式影响类定义之外的 HTML 元素
- typescript - 如何设置 VS Code 以使用 Typescript 调试 Jest?
- android - Android:如何使用模拟位置进行仪器测试?
- mysql - GCP 数据流专用连接 - 无法连接到 MySQL 服务器
- r - 如何在 R studio 的分类多个 ggboxplots 中纠正重叠的 x 轴标签
- asp.net-core - 关于如何绕过不支持 IIS 的 Windows 11 ARM 的想法
- c++ - 如何为成员函数声明一个概念并在友元函数中使用
- python - 如何在不使用 shell=True 的情况下通过 Python subprocess.check_output 调用 FFmpeg 时捕获输出?
- python - 语法错误代码之前有效,但现在无效