我依赖python的os.environ
来确定应用程序应该使用什么配置(例如不同主机的不同API密钥)。
看起来bulkloader无法访问这些变量,当bulkloade运行时,我是否可以判断我的应用程序或当前主机的当前版本?
通常我在config_helper
:中这样做
env = os.environ[ 'CURRENT_VERSION_ID' ].split( '.' )[ 0 ]
bulkloader报告了一个关于CURRENT_VERSION_ID
的KeyError,所以我使用了这个:
if os.environ.get('HTTP_HOST'):
host = os.environ['HTTP_HOST']
else:
host = os.environ['SERVER_NAME']
if host is not None:
if host.find( 'locahost' ):
env = 'local'
elif host.find( 'prod-server' ):
env = 'prod'
elif host.find( 'dev-server' ):
env = 'dev'
elif host.find( 'stage-server' ):
env = 'stage'
os.environ[ 'CURRENT_VERSION_ID' ] = env + '.1'
然而,bulkloader抱怨SERVER_NAME
是一个无效对象,这意味着它也找不到HTTP_HOST
。
还有其他想法吗?
HTTP_HOST和CURRENT_VERSION_ID等环境变量仅在应用程序作为web应用程序运行时可用。
也许您可以通过env命令传递变量,如下所示:
$ env CURRENT_VERSION_ID=local.1 bulkloader ....