如何从服务器端Javascript执行Python脚本
关于如何从客户端执行Python脚本,有很多答案。我感兴趣的是找出是否可以从服务器端执行脚本,并检查执行是否成功完成。比方说,我使用的堆栈两边都使用JavaScript,有一堆Python脚本任务需要从后端触发。Meteor在NodeJS容器中运行。因此,您应该能够使用类似的软件包为您完成此任务。如果您在项目中需要python脚本,最常见的方法是通过消息队列连接python和meteor。例如,meteor上发生的动作应该会触发一些python脚本。您将消息发送到python的队列。Python侦听队列和获取消息的时间启动任务。任务完成后,python应该向队列发送消息,可能包含任务的结果或其他信息如何从服务器端Javascript执行Python脚本,javascript,python,meteor,Javascript,Python,Meteor,关于如何从客户端执行Python脚本,有很多答案。我感兴趣的是找出是否可以从服务器端执行脚本,并检查执行是否成功完成。比方说,我使用的堆栈两边都使用JavaScript,有一堆Python脚本任务需要从后端触发。Meteor在NodeJS容器中运行。因此,您应该能够使用类似的软件包为您完成此任务。如果您在项目中需要python脚本,最常见的方法是通过消息队列连接python和meteor。例如,meteor上发生的动作应该会触发一些python脚本。您将消息发送到python的队列。Python
//Meteor server side
var amqp = Meteor.require('amqp');
var connection = amqp.createConnection(amqpCredentials);
var Fiber = Npm.require("fibers");
connection.on('ready', function(){
connection.queue(queueName, {autoDelete: false}, function(queue){
console.log(' [*] Waiting for messages. To exit press CTRL+C')
queue.subscribe(function(msg){
console.log(" [x] Received %s", msg.data.toString('utf-8'));
var msg = EJSON.parse(msg.data);
if(msg.type === 'news'){
Fiber(function(){News.insert(msg.data).run()});
}
});
});
}))
在python方面,您应该运行任务并添加队列的侦听器。
您可以在官方文档中阅读关于RabbitMq和python客户端的信息您只需调用命令行即可,与在任何节点应用程序中一样:
var exec = Npm.require('child_process').exec;
var Fiber = Npm.require('fibers');
new Fiber(function(){
exec("python command", function (error, stdout, stderr) {
...
});
}).run();
这不需要在光纤/未来中运行吗?这一点很好。通常,它需要。我已经更新了答案代码。“警告仅适用于dev machine shell脚本。不要用于生产服务器。”-他们自述文件中的这条评论有点令人担忧。你能提供一个简单的示例或指向一个好的资源吗?