Я запускаю сценарий python на своем сервере для данных, которые я передал ему с помощью формы. Сценарий занимает 6-8 сек c времени выполнения, и после запуска скрипта я отображаю другую страницу. Я хочу, чтобы страница загрузки отображалась во время выполнения сценария на бэкэнде.
Мой код:
var express = require("express"),
router = express.Router();
var Place = require("../models/place"),
Comment = require("../models/comment");
var middleware = require("../middleware"),
multer = require("multer"),
path = require("path"),
{spawn} = require("child_process"),
fs = require("fs");
function runScript(pathToImage){
return spawn('python', [
"-u",
path.join(__dirname + "/../", 'script.py'),
pathToImage,
]);
}
//CREATE Route
//route to get the form
router.get("/new", middleware.isLoggedIn, function(req, res){
res.render("places/new");
});
//post route
router.post("/", middleware.isLoggedIn, uploadDir.single("image"), function(req, res){
var name = req.body.name;
var imgurl = "/uploads/images/" + req.file.filename;
var description = req.body.description;
var author = {
id: req.user._id,
username: req.user.username
};
let garbageVal;
//running my python script
const subprocess = runScript("uploads/images/" + req.file.filename);
// print output of script
subprocess.stdout.on('data', (data) => {
garbageVal = data.toString();
});
subprocess.on('close', () => {
if(garbageVal === "Garbage found\n"){
var newPlace = {name:name, image:imgurl, description:description, author:author, garbageVal:garbageVal};
//Create a new place and save to DB
Place.create(newPlace, function(err, newlyCreated){
if(err){
console.log("DB inserting error");
}
else{
res.redirect("/places");
}
});
}
else{
req.flash("error", "No garbage found in the uploaded image.");
fs.unlink("uploads/images/" + req.file.filename, (err) => {
if (err){
console.log(err);
return res.redirect("back");
}
console.log("Image deleted from server");
res.redirect("/places");
});
}
});
});
Я попытался добавить загрузчик div и установить для его свойства display значение none. когда мое тело загружается на страницу, но это не имеет никакого эффекта, так как при запуске моего сценария python сервер не отвечает.