【问题标题】:Why do i use custom Variable Environment in a hosting website?为什么我在托管网站中使用自定义变量环境?
【发布时间】:2014-09-01 06:14:44
【问题描述】:

我是托管世界 (cloudcontrol) 的新手,我遇到了一些应用程序凭据问题,例如数据库管理 (mongohq) 或 google 身份验证。

那么,我是否会将这些带有某种语法(例如$variable)的变量放入代码中,然后使用键值作为变量值来创建命令行?

【问题讨论】:

    标签: mongodb heroku deployment tornado cloudcontrol


    【解决方案1】:

    如果您使用 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']
    

    【讨论】:

    • 我不明白,所以当我把它作为命令行放在 procfile 中时,cloudcontrol 会使用这些变量?
    • 您想为云控制提供一些变量还是在您的代码中使用一些已经设置好的环境变量?
    • 我会使用 gmail 和 mongohq,所以我猜会有新的自定义环境变量?那么在哪里设置它们,在代码本身上?
    • 我不明白,你能详细说明一下吗?例如,您希望您的代码连接到 mongohq 并将凭据保存在环境变量中?
    • 上面一行指定了 Tornado,mongo_uri 将在运行时作为参数传递,否则使用默认的127.0.0.1:28017 它与环境变量无关。阅读this
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多