【问题标题】:Calling Python scripts in Meteor在 Meteor 中调用 Python 脚本
【发布时间】:2015-01-03 21:05:34
【问题描述】:
【问题讨论】:
标签:
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 方法最适合我的用例。我希望您发现我的回答很有用,并扩大您的考虑范围,并选择最适合您情况的一个。祝你好运。