在 Meteor 中调用 Python 个脚本

Calling Python scripts in Meteor

让我的 meteor 应用程序调用与 meteor 服务器端代码位于同一台机器上的 python 脚本的最佳方法是什么?我想要做的就是让 meteor 将字符串传递给 python 中的函数,并让 python return 将字符串传递给 meteor。

我在想我可以让 python 监视 mongodb 并提取值并在计算后将它们写回 mongodb,但是让 meteor 调用该函数似乎更清晰直接在 python 中。

我是 DDP 的新手,无法使用 python-meteor (https://github.com/hharnisc/python-meteor)。

ZeroRPC (http://zerorpc.dotcloud.com/) 是一个好方法吗?

谢谢。

我过去有使用 RestFul 方法实现类似功能的经验。

通过从服务器触发 observeChanges from Meteor, sending a http request to Python restful api endpoints (in Flask),然后 Flask 在调用相关 Python scripts/functions 时处理请求,并返回 return 响应, Meteor 然后相应地处理回调。

当然还有很多其他的方法可以考虑,比如使用DDP,child_process等。我之前也考虑过使用python-meteor然而,考虑到 RestFul 方法更具可移植性和可扩展性(在同一台机器上,甚至在不同的机器上......你可以扩展你的服务器来处理更多的请求等等。你明白了)。

每个人的用例都不同,我发现 RestFulappoach 最适合我的用例。我希望您觉得我的回答有用,并扩大您的考虑范围并选择最适合您的情况。祝你好运。

好问题。

我研究过使用 DDP 和 ZeroRPC,甚至 Python 直接写入 Mongo。

对我来说,让 Meteor 和 Python 对话的最简单方法是将 python 脚本设置为烧瓶应用程序,然后将 API 添加到烧瓶应用程序中,然后让 Meteor 通过 API.

与 Python 对话

为了使此设置正常工作,我使用了:

要测试它,您可以像这样构建一些基本的东西(python 脚本将文本转换为大写):

from flask import Flask
from flask.ext import restful

app = Flask(__name__)
api = restful.Api(app)

class ParseText(restful.Resource):
    def get(self, text):
        output = text.upper()
        return output

api.add_resource(ParseText, '/<string:text>')

if __name__ == '__main__':
    app.run(debug=True) # debug=True is for testing to see if calls are working.

然后在 Meteor 中使用 HTTP.get 来测试调用 API。

如果您 运行 一切都在本地,那么来自 Meteor 的呼叫可能类似于:Meteor.http.get("http://127.0.0.1:5000/test");