在Meteor中调用Python脚本

时间:2015-01-03 21:05:34

标签: python mongodb meteor

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

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

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

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

感谢。

2 个答案:

答案 0 :(得分:7)

很棒的问题。

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

答案 1 :(得分:2)

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

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

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

每个人的使用案例都不同,我发现RestFul appoach最适合我的用例。我希望你发现我的答案很有用,并扩大你的考虑选择,并选择一个最适合你的情况。祝你好运。