如何在其他设备上将Python + Tornado与MongoDB连接?
我正在尝试在OpenShift上运行Tornado,使用的是自动扩展功能开启的Python 2.7环境。我把wsgi.py文件删掉了,因为它会阻碍Tornado的运行。结果启动失败了:
$gear start
Starting gear...
HAProxy instance is started
Starting Python 2.7 cartridge (Apache+mod_wsgi)
Application directory "/" selected as DocumentRoot
CLIENT_ERROR: WSGI application was not found
请问可以在开启扩展功能的情况下运行Python 2.7环境吗?(这样MongoDB就可以在单独的服务器上,但可以不需要SSH隧道就能通信。)但是又不实际进行扩展(不使用Apache和mod_wsgi,也不使用HaProxy)?
2 个回答
我建议你使用这里的 Tornado 快速入门指南:https://www.openshift.com/quickstarts/tornado-web-server-and-python-33-on-openshift。这样你只需一条命令或一次点击,就能轻松开始使用 Tornado 和 Python 3.3。
我终于搞定了。通过使用我的工具包,你可以绕过OpenShift的限制,让可扩展的应用程序之间连接数据库。为此,我创建了两个工具包。使用我的工具包,你可以在有或没有扩展的情况下连接到数据库。
首先,创建一个新的Python应用程序,选择不扩展的版本,你可以在这里使用我的工具包: https://github.com/v3ss0n/openshift-pynado-xport
rhc app create pythonx http://cartreflect-claytondev.rhcloud.com/github/v3ss0n/openshift-pynado-xport
这个工具包会提供Anaconda Python 2.7.8、virtualenv、tornado和pymongo,准备好使用。
然后,使用我的mongox-unbound工具包创建一个新的MongoDB应用: https://github.com/v3ss0n/openshift-mongox-unbound
rhc app create mongox http://cartreflect-claytondev.rhcloud.com/github/v3ss0n/openshift-mongox-unbound
这会创建一个名为mongox的Mongo 2.6数据库,用户是admin,数据库密码是随机生成的,并在设置结束时提示你。
要在你的Python应用中测试它:
mongo = pymongo.Connection("mongodb://admin:password@MONGODB_APP_NAME-YOURDOMAIN.rhcloud.com:PORT/")
通过这个方法,你可以将MongoDB单独托管,与Python、PHP或Java应用程序分开。
如果你需要帮助,可以在我的GitHub上问我问题。