コード例 #1
0
ファイル: app.py プロジェクト: sigepijiang/avalon
    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)
コード例 #2
0
ファイル: get_app_info.py プロジェクト: rushsinging/jAvalon
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
コード例 #3
0
ファイル: const.py プロジェクト: rushsinging/jAvalon
#-*- 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()
コード例 #4
0
ファイル: uwsgi_conf.py プロジェクト: rushsinging/jAvalon
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}),
コード例 #5
0
ファイル: render.py プロジェクト: sigepijiang/avalon
def config():
    global CONF
    if CONF is None:
        CONF = load_yaml(os.path.join(BASE, 'avalon.yaml'))
    return CONF
コード例 #6
0
ファイル: client.py プロジェクト: rushsinging/jAvalon
def _get_config():
    base = os.environ['BASE']
    return load_yaml(os.path.join(base, 'avalon.yaml'))