【发布时间】:2014-09-01 06:14:44
【问题描述】:
我是托管世界 (cloudcontrol) 的新手,我遇到了一些应用程序凭据问题,例如数据库管理 (mongohq) 或 google 身份验证。
那么,我是否会将这些带有某种语法(例如$variable)的变量放入代码中,然后使用键值作为变量值来创建命令行?
【问题讨论】:
标签: mongodb heroku deployment tornado cloudcontrol
我是托管世界 (cloudcontrol) 的新手,我遇到了一些应用程序凭据问题,例如数据库管理 (mongohq) 或 google 身份验证。
那么,我是否会将这些带有某种语法(例如$variable)的变量放入代码中,然后使用键值作为变量值来创建命令行?
【问题讨论】:
标签: mongodb heroku deployment tornado cloudcontrol
如果您使用 Tornado,它会变得更加简单。使用tornado.options 并在运行代码时传递环境变量。
在您的 Tornado 代码中使用以下内容:
define("mysql_host", default="127.0.0.1:3306", help="Main user DB")
define("google_oauth_key", help="Client key for Google Oauth")
然后您可以在其余代码中访问这些值:
options.mysql_host
options.google_oauth_key
在运行 Tornado 脚本时,传递环境变量:
python main.py --mysql_host=$MYSQL_HOST --google_oauth_key=$OAUTH_KEY
假设$MYSQL_HOST 和$OAUTH_KEY 都是环境变量。如果您需要完整的工作示例或任何进一步的帮助,请告诉我。
示例:
先设置一个环境变量:
$export mongo_uri_env=mongodb://alien:12345@kahana.mongohq.com:10067/essog
并更改您的 Tornado 代码:
define("mongo_uri", default="127.0.0.1:28017", help="MongoDB URI")
...
...
uri = options.mongo_uri
你会运行你的代码
python main.py --mongo_uri=$mongo_uri_env
如果您不想在运行时传递它,那么您必须直接在脚本中读取该环境变量。为此
import os
...
...
uri = os.environ['mongo_uri_env']
【讨论】:
mongo_uri 将在运行时作为参数传递,否则使用默认的127.0.0.1:28017 它与环境变量无关。阅读this