【问题标题】:Calling Python scripts in Meteor在 Meteor 中调用 Python 脚本
【发布时间】:2015-01-03 21:05:34
【问题描述】:

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

我在想我可以让 python 监控 mongodb 并提取值并在计算后将它们写回 mongodb,但是让流星直接在 python 中调用函数似乎更干净。

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

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

谢谢。

【问题讨论】:

    标签: python mongodb meteor


    【解决方案1】:

    好问题。

    我研究过使用 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");

    【讨论】:

    • 我尝试使用 Meteor 和 ZeroRPC,但无法使用 Meteor 1.3 和命令 meteor npm install --save zerorpc 安装后者。 Meteor 1.3 使用 Node 0.10.43,它有一些 issues 安装 libmsg,ZeroRPC 的依赖项。这个解决方案看起来要简单得多,因为它使用了原生 Meteor 包。谢谢!
    【解决方案2】:

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

    通过从 Meteor 触发 observeChanges,从服务器向 Python RESTful api 端点(Flask)发送 http 请求,然后 Flask 在调用相关 Python 脚本/函数时处理请求,并返回响应,Meteor 然后相应地处理回调。

    您当然可以考虑许多其他方法,例如使用 DDP、child_process 等。我之前也考虑过使用 python-meteor,但是在考虑到 RestFul 方法更便携和可扩展之后(都在同一台机器上,甚至在不同的机器上......你可以扩展你的服务器来处理更多的请求等等。你明白了)。

    每个人的用例都不一样,我发现 RestFul 方法最适合我的用例。我希望您发现我的回答很有用,并扩大您的考虑范围,并选择最适合您情况的一个。祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 2021-07-23
      相关资源
      最近更新 更多