openstack中的配置文件和python中的全局变量
2013-11-08 14:14
483 查看
最近,被python中的全局变量搞的挺迷惑。
在看openstack的配置文件时,总会看到,在文件头部有一些配置,在/etc/***/*.conf文件也有配置,那么具体哪个生效呢,这就要用到python中全局变量的特性了!
先举例:
flag.py
sub.py
main_moudle.py(主程序)
结果:
1.new
2
这说明,只要在任意模块中修改了flag中的变量,那么在其他模块中使用时,模块flag中的变量的值也会改变。
这个类似于openstack中的配置:
所有的配置文件都放在flags文件下,服务启动时,调用一下脚本:
那么在cinder其他模块中所调用的flags都是此全局变量
这个也说明了了openstack配置文件的优先级:
/etc下的配置文件中优先,其次是模块中的设置;
在看openstack的配置文件时,总会看到,在文件头部有一些配置,在/etc/***/*.conf文件也有配置,那么具体哪个生效呢,这就要用到python中全局变量的特性了!
先举例:
flag.py
X="1" Y="2" def setx(): global X X="1.new"
sub.py
import flag def printy(): print flag.Y def printx(): print flag.X
main_moudle.py(主程序)
import flag import sub flag.setx() while True: key=raw_input("input :") sub.printx() sub.printy()
结果:
1.new
2
这说明,只要在任意模块中修改了flag中的变量,那么在其他模块中使用时,模块flag中的变量的值也会改变。
这个类似于openstack中的配置:
所有的配置文件都放在flags文件下,服务启动时,调用一下脚本:
import eventlet eventlet.monkey_patch() import os import sys possible_topdir = os.path.normpath(os.path.join(os.path.abspath( sys.argv[0]), os.pardir, os.pardir)) if os.path.exists(os.path.join(possible_topdir, "cinder", "__init__.py")): sys.path.insert(0, possible_topdir) from cinder import flags #全局变量 from cinder.openstack.common import log as logging from cinder import service from cinder import utils if __name__ == '__main__': flags.parse_args(sys.argv) #这里从/etc/cinder/cinder.conf中加载了配置文件,修改了flags中的全局变量 logging.setup("cinder") utils.monkey_patch() server = service.WSGIService('osapi_volume') service.serve(server) service.wait()
那么在cinder其他模块中所调用的flags都是此全局变量
这个也说明了了openstack配置文件的优先级:
/etc下的配置文件中优先,其次是模块中的设置;
相关文章推荐
- python通过配置文件共享全局变量
- Mysql:命令选项、配置选项、(全局、会话)系统变量、状态变量:和路径、文件名称相关的设置
- python实现跨文件全局变量的方法
- Vue文件配置全局变量的实例
- python2.7 跨文件全局变量的方法
- 将properties文件的配置设置为整个Web应用的全局变量实现方法
- 全局变量与类似配置文件的模块文件
- Python实现跨文件全局变量的方法
- 配置文件局部变量和全局变量
- python中如何在不同文件间共享全局变量
- Python实现跨文件全局变量的方法
- Python跨文件全局变量的实现方法示例
- python实现跨文件全局变量的方法
- 在配置文件中设置全局变量
- python实现跨文件全局变量的方法
- python中如何在不同文件间共享全局变量
- python实现跨文件全局变量
- Vue文件配置全局变量
- 全局变量的单例模式 从指定的配置文件中读取配置信息
- python基础(函数、局部变量、全局变量、文件操作)