def _init_config(self, name): try: environ = os.environ self.config.home_path = environ['BASE'] self.config.environ = environ['AVALON_ENVIRON'] self.config.app_path = get_root_path(name) self.config.app_name = name global_config = load_yaml( os.path.join(self.config.home_path, 'avalon.yaml')) app_config = load_yaml( os.path.join(get_root_path(name), '../app.yaml')) gloabal_app_config = global_config.pop('APPS')[name.upper()] if len( set(app_config.keys()) - set(gloabal_app_config.keys()) ) < len(app_config): raise AvalonConfigError('app设置与global冲突') app_config.update(gloabal_app_config) for i in app_config.keys(): setattr(self.config, i.lower(), app_config[i]) global_config.pop('UWSGI') nginx_config = global_config.pop('NGINX') for i in global_config.keys(): setattr(self.config, i.lower(), global_config[i]) self.config.global_port = nginx_config['LISTEN'] except KeyError as e: raise AvalonConfigError(e)
def get_app_info(): yaml_path = sys.argv[1] config = load_yaml(yaml_path) app_name = config["APP_NAME"] app_path = os.path.dirname(yaml_path) app_base = config["APP_BASE"] print app_name, app_path, app_base
#-*- coding: utf-8 -*- import os import socket from share.config import load_yaml _env = os.environ _config = load_yaml(os.path.join(_env['BASE'], 'avalon.yaml')) namespace = _config['NAMESPACE'] domain = _config['DOMAIN'] hostname = socket.gethostname()
def main(): try: yamlfile = sys.argv[1] except IndexError: raise Exception('Please provide the path of loading yaml.') global_data = config.load_yaml(os.path.join(os.environ['BASE'], 'avalon.yaml')) app_data = config.load_yaml(yamlfile) chdir = os.path.abspath(os.path.dirname(yamlfile)) chdir = os.path.relpath(chdir, os.environ['BASE']) appname = app_data['APP_NAME'] data = global_data['APPS'][appname.upper()] default_use_http = global_data['UWSGI']['USE_HTTP'] default_enable_threads = global_data['UWSGI']['ENABLE_THREADS'] data.update(app_data) # uwsgi 读取 yaml 时对顺序有要求, 因此使用 json 来 dump uwsgi = { 'master': 1, 'buffer-size': 32768, 'so-keepalive': 1, 'chdir': ('%(base_dir)/' + chdir), 'pep3333-input': '', 'post-buffering': 4096, 'virtualenv': '%(base_dir)/.py', } if data.get('USE_HTTP', default_use_http): uwsgi['http-socket'] = '%(HOST)s:%(PORT)s' % data else: uwsgi['socket'] = '%(HOST)s:%(PORT)s' % data if 'MODULE' in data: uwsgi['module'] = data['MODULE'] else: uwsgi['module'] = 'app:app' if 'ROUTE' in data: uwsgi['route'] = data['ROUTE'] if 'ATTACH_DAEMON' in data: uwsgi['attach-daemon'] = data['ATTACH_DAEMON'] if 'SMART_ATTACH_DAEMON' in data: uwsgi['smart-attach-daemon'] = data['SMART_ATTACH_DAEMON'] if 'SMART_ATTACH_DAEMON2' in data: uwsgi['smart-attach-daemon2'] = data['SMART_ATTACH_DAEMON2'] if 'WORKER_EXEC' in data: uwsgi['worker-exec'] = data['WORKER_EXEC'] if 'PLUGINS' in data: uwsgi['plugins-dir'] = '%s/.py/bin' % os.environ['BASE'] uwsgi['plugins'] = data['PLUGINS'] if 'JVM_CLASSPATH' in data: uwsgi['jvm-classpath'] = data['JVM_CLASSPATH'] if 'JVM_MAIN_CLASS' in data: uwsgi['jvm-main-class'] = data['JVM_MAIN_CLASS'] if 'DISABLE_LOGGING' in data: uwsgi['disable-logging'] = data['DISABLE_LOGGING'] if 'LISTEN' in data: uwsgi['listen'] = data['LISTEN'] if 'LOG_4XX' in data: uwsgi['log-4xx'] = data['LOG_4XX'] if 'LOG_5XX' in data: uwsgi['log-5xx'] = data['LOG_5XX'] # uwsgi 1.3.1 才支持 #if 'SMART_ATTACH_DAEMON' in data: # uwsgi['smart-attach-daemon'] = data['SMART_ATTACH_DAEMON'] if 'PROCESSES' in data: uwsgi['processes'] = data['PROCESSES'] uwsgi['enable-threads'] = data.get( 'ENABLE_THREADS', default_enable_threads) uwsgi['env'] = [ 'AVALON_APPNAME=%s' % data['APP_NAME'], ] print json.dumps({'uwsgi': uwsgi}),
def config(): global CONF if CONF is None: CONF = load_yaml(os.path.join(BASE, 'avalon.yaml')) return CONF
def _get_config(): base = os.environ['BASE'] return load_yaml(os.path.join(base, 'avalon.yaml'))