当前位置:  开发笔记 > 编程语言 > 正文

让python和流星说话的最好方法

如何解决《让python和流星说话的最好方法》经验,为你挑选了2个好方法。

我想在meteor(版本0.8)中构建一个调用python脚本的项目,该脚本又将一些数据发送回去meteor.我不确定目前这样做的最佳做法是什么.

DDP看起来不错:
"客户端可以用来通过它的DDP协议与Meteor通信,来自Meteor堆栈外部." 但python实现看起来未完成:python-ddp-client

我想我也可以直接写mongodb,python但听起来不是最好的主意:

Python可以写入数据库并且Meteor会被动地更新

当流星运行时,我如何从另一个客户端访问Meteor的mongodb?

我错过了什么吗?有一个更好的方法吗?



1> Hubert OG..:

如果python脚本在同一台服务器上,你可以像在普通的Node.js应用程序中一样调用它:

var exec = Npm.require('child_process').exec;
var Fiber = Npm.require('fibers');
var Future = Npm.require('fibers/future');

Meteor.methods({

  callPython: function() {
    var fut = new Future();
    exec('pythonScriptCommand with parameters', function (error, stdout, stderr) {

      // if you want to write to Mongo in this callback
      // you need to get yourself a Fiber
      new Fiber(function() {
        ...
        fut.return('Python was here');
      }).run();

    });
    return fut.wait();
  },

});



2> Andrew Mao..:

您链接的其他问题已经过时(一个差不多是两年).

如果你不需要调用服务器方法,你应该直接从python写入MongoDB.实际上,这就是多个Meteor服务器(负载均衡同一个应用程序)之间相互通信的方式.这是通过让Meteor服务器拖尾Mongo oplog并立即合并任何数据库操作来实现的.

这在Meteor版本0.7.2中完全实现.

当您写入数据库时​​,您可以使用集合上的典型observeobserveChanges操作来让Meteor服务器执行操作.

进行RPC调用的另一种方法是使用消息总线,如ZeroMQ.我用这个来调用Meteor的Python机器学习算法.这支持不同机器上的Python进程,负载平衡等.有关如何操作,请参阅以下帖子:

http://ianhinsdale.com/code/2013/12/08/communicating-between-nodejs-and-python/

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有