关于如何从客户端执行Python脚本,有许多答案。我有兴趣了解是否可以从服务器端执行脚本,并检查执行是否成功完成。可以说我正在使用Meteor堆栈,该堆栈的两面都使用JavaScript,并且有一堆需要从后端触发的Python脚本任务。

最佳答案

如果您在项目中需要python脚本,则最常见的方法是通过消息队列连接python和 meteor 。例如在 meteor 上发生的 Action 应该触发一些python脚本。您将消息发送到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 tutor中了解RabbitMq和python客户端

07-24 18:46
查看更多