让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/)是一个很好的方法吗?
感谢。
答案 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最适合我的用例。我希望你发现我的答案很有用,并扩大你的考虑选择,并选择一个最适合你的情况。祝你好运。