Лучший способ получить питон и метеорный разговор

Я хотел бы построить проект в meteor (версия 0.8), который вызывает python script, который, в свою очередь, отправляет некоторые данные обратно в meteor. Я не уверен, что лучше всего подходит для этого на данный момент.

DDP выглядит хорошо:
"Клиенты, которые могут использоваться для связи с Meteor через протокол DDP, извне стека Meteor". Но реализация python выглядит незавершенной: python-ddp-client

Я думаю, что я мог бы также напрямую писать на mongodb из python, но это не похоже на лучшую идею:

Я что-то пропустил? Есть ли лучший способ сделать это?

Ответ 1

Если python script находится на одном сервере, вы можете просто вызвать его, как в обычном приложении 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

Другие вопросы, с которыми вы связаны, очень устарели (одному почти два года).

Вы должны просто написать непосредственно в MongoDB из python, если вам не нужно вызывать методы сервера. Фактически, это то, как несколько серверов Meteor (балансировка нагрузки одного и того же приложения) разговаривают друг с другом. Это реализовано с помощью Meteor servers хвоста Mongo oplog и немедленно включить любые операции с базой данных.

Это было полностью реализовано в версии 0.7.2 Метеор.

Когда вы пишете в базу данных, вы можете использовать типичный observe или observeChanges операции над коллекциями, чтобы сервер Meteor делал вещи.

Другой способ сделать вызовы RPC - использовать шину обмена сообщениями, такую ​​как ZeroMQ. Я использую это для вызова алгоритмов машинного обучения в Python от Meteor. Это поддерживает процессы Python на разных машинах, балансировку нагрузки и т.п. Для этого выполните следующие действия:

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