Serverseitiges JavaScript soll Serverseitiges Pythonscript ansprechen
hmm
- javascript
- python
Hi,
habt ihr mal eine Anleitung wie ich mit einem serverseitigem JavaScript ein auf dem Server liegendes Python Script ansprechen kann?
sowas wie node.js mit child_process.exec?
Ich habe einen win32 Server auf dem NodeJs läuft. Clientseitig hab ich JavaScript und Serverseitig nochmal JavaScript.
Jetzt brauch ich Serverseitig noch eine Sprache mit sehr Mathematischen Bibliotheken (Optimierung, Geometerie, Numerische Mathematik, Differentialgleichungen etc.) also C++, R oder Python. C++ bekomme ich mit Node JS unter 32bit nicht zum laufen (unter Ubuntu 64bit schon) und auf den versuch R auf einem Win-Server zu installieren hab ich kein Bock gerad. Darum würde ich gerne Python nehmen.
Mein Serverseitiges JavaScript setzt meine index.html und mein Clientseitiges JavaScript. Das ClientSeitige JavaScript soll jetzt eine Python Funktion aufrufen können. (Später tausch ich das Python zeug dann vielleicht doch gegen C++ aus)
Hello,
wozu ist eigentlich shelljs gut?
Liebe Grüße
Tom S.
danke.
shell.echo("python test.py")
wie lese ich damit die antwort in der console?
Hello,
shell.echo("python test.py")
wie lese ich damit die antwort in der console?
Pipelining, Ausgabekanal angeben.
exec('some_long_running_process', function(code, stdout, stderr) {
console.log('Exit code:', code);
console.log('Program output:', stdout);
console.log('Program stderr:', stderr);
});
Liebe Grüße
Tom S.
danke! das ist noch besser als dass was ich gerade gemacht habe
Mein server.js File sieht mit C++ aufruf so aus:
var express = require('express');
var app = express();
const addon = require('./build/Release/hello');
app.use(app.router);
app.use("/boot/css", express.static(__dirname + '/boot/css'));
app.use("/boot/js", express.static(__dirname + '/boot/js'));
app.use("/boot/img", express.static(__dirname + '/boot/img'));
app.get('/', function(req, res){
res.sendfile('index.html', { root: __dirname + "/" } );
});
app.get('/app', function(req, res) {
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ antwort: addon.hello()}));
});
app.listen(8080);
Geht das so ähnlich mit Pythonfunktionen?
danke läuft!
var express = require('express');
var app = express();
var shell = require('shelljs')
//const addon = require('./build/Release/hello');
app.use(app.router);
app.use("/boot/css", express.static(__dirname + '/boot/css'));
app.use("/boot/js", express.static(__dirname + '/boot/js'));
app.use("/boot/img", express.static(__dirname + '/boot/img'));
app.get('/', function(req, res){
res.sendfile('index.html', { root: __dirname + "/" } );
});
app.get('/app', function(req, res) {
res.setHeader('Content-Type', 'application/json');
var str = shell.exec('python test.py').stdout;
console.log(str);
res.send(JSON.stringify({ antwort: str}));//addon.hello()
});
app.listen(8080);
Das ganze läuft jetzt auf meinem Ubuntu Server, aber auch meinem Windows Server nicht:
var express = require('express');
var app = express();
var shell = require('shelljs')
//const addon = require('./build/Release/hello');
//app.use(app.router);
app.use("/boot/css", express.static(__dirname + '/boot/css'));
app.use("/boot/js", express.static(__dirname + '/boot/js'));
app.use("/boot/img", express.static(__dirname + '/boot/img'));
app.get('/', function(req, res){
res.sendfile('index.html', { root: __dirname + "/" } );
});
app.get('/app', function(req, res) {
res.setHeader('Content-Type', 'application/json');
var str = shell.exec('python test.py').stdout;
console.log(str);
res.send(JSON.stringify({ antwort: str}));//addon.hello()
});
app.listen(8080);
Fehlermeldung:
events.js:160
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE 0.0.0.0:8080
at Object.exports._errnoException (util.js:1026:11)
at exports._exceptionWithHostPort (util.js:1049:20)
at Server._listen2 (net.js:1257:14)
at listen (net.js:1293:10)
at Server.listen (net.js:1389:5)
at EventEmitter.listen (D:\home\site\wwwroot\node_modules\express\lib\application.js:618:24)
at Object.<anonymous> (D:\home\site\wwwroot\server.js:36:5)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
Woran kann das liegen?
mit
app.listen(process.env.PORT || 8000);
ging die fehlermeldung unter dem win-Server weg. Aber leider stimmen die Routen nicht....
okay, fehler gefunden.…
var shell = require('shelljs')
da musste ein ";" zugefügt werden damit es auf dem win-server geht!
Hello,
okay, fehler gefunden.… var shell = require('shelljs') da musste ein ";" zugefügt werden damit es auf dem win-server geht!
Schön, dass Du das rückgemeldet hast. Das hilft den nächsten Suchenden. Mein +1 dafür :-)
Liebe Grüße
Tom S.