我有一个 Python 应用程序,它使用 dotcloud.yml 文件中的新 New Relic 配置变量设置,效果很好。
但是,我想将沙盒实例作为测试/暂存环境运行,因此我希望能够设置 newrelic 代理的环境,以便它使用 ini 配置的不同配置部分。我的 dotcloud.yml 设置如下:
www:
type: python
config:
python_version: 'v2.7'
enable_newrelic: True
environment:
NEW_RELIC_LICENSE_KEY: *****************************************
NEW_RELIC_APP_NAME: Application Name
NEW_RELIC_LOG: /var/log/supervisor/newrelic.log
NEW_RELIC_LOG_LEVEL: info
NEW_RELIC_CONFIG_FILE: /home/dotcloud/current/newrelic.ini
我有自定义环境变量,因此 sanbox 设置为“测试”,实时应用程序设置为“生产”
然后我在我的 uswsgi.py 中调用以下内容
NEWRELIC_CONFIG = os.environ.get('NEW_RELIC_CONFIG_FILE')
ENVIRONMENT = os.environ.get('MY_ENVIRONMENT', 'test')
newrelic.agent.initialize(NEWRELIC_CONFIG, ENVIRONMENT)
但是,dotcloud 实例已经启用了 newrelic,因为我在 uwsgi.log 文件中得到了这个:
Sun Nov 18 18:50:12 2012 - unable to load app 0 (mountpoint='') (callable not found or import error)
Traceback (most recent call last):
File "/home/dotcloud/current/wsgi.py", line 15, in <module>
newrelic.agent.initialize(NEWRELIC_CONFIG, ENVIRONMENT)
File "/opt/ve/2.7/local/lib/python2.7/site-packages/newrelic-1.8.0.13/newrelic/config.py", line 1414, in initialize
log_file, log_level)
File "/opt/ve/2.7/local/lib/python2.7/site-packages/newrelic-1.8.0.13/newrelic/config.py", line 340, in _load_configuration
'environment "%s".' % (_config_file, _environment))
newrelic.api.exceptions.ConfigurationError: Configuration has already been done against differing configuration file or environment. Prior configuration file used was "/home/dotcloud/current/newrelic.ini" and environment "None".
因此,似乎在调用 uwsgi.py 之前正在初始化 newrelic 代理。
所以我的问题是:
有没有办法初始化 newrelic 环境?