针对大项目的配置文件使用!
针对大项目的配置文件使用!
项目配置文件使用:
1,由于项目不完全是web项目,因此配置文件只是在 config.py 之中就不合适
2,全局配置有一个 ini 文件,并且指定了各个模块对应的配置文件所在的位置
导入配置文件!
import sys from django.core.management import execute_from_command_line from paste.deploy import loadapp def main(): # 指定全局配置文件! loadapp( 'config:lico.ini#django', relative_to='/etc/lico', ) execute_from_command_line(sys.argv)
全局配置文件!
[DEFAULT] debug = false # 指定了django 配置文件的位置!web 使用默认的配置文件! django_settings_module = antilles_web.settings # common allow_hosts = * domain = hpc.com # database db_engine = django.db.backends.postgresql_psycopg2 db_host = 127.0.0.1 db_port = 5432 db_name = lico # influxdb influx_host = 127.0.0.1 influx_port = 8086 influx_database = lico # login login_fail_max_chance = 3 # sharedir share_dir = /home # user use_libuser = false user_share_dir = # folder # 日志文件的位置! log_dir = /var/log/lico script_dir = /var/run/lico/core/scripts download_dir = /var/run/lico/core/download upload_dir = /var/run/lico/core/upload lock_dir = /var/run/lico/core/lock # ai ai_src_root = %(share_dir)s/lico/ai ai_container_root = %(ai_src_root)s/container ai_topology_root = %(ai_src_root)s/topology ai_monitor_max_worker = 25 # scheduler scheduler_software = slurm scheduler_queues_auto_get = true scheduler_queues = #slurm slurm_user = slurm # alarm agent wechat_agent_url = http://127.0.0.1:18090 wechat_template_id = <wechat_template_id> mail_agent_url = http://127.0.0.1:18091 sms_agent_url = http://127.0.0.1:18092 # nodes file nodes_file = %(here)s/nodes.csv auto_sync_nodes = true # confluent confluent_port = 4005 # requests requests_timeout = 30 # ===== WSGI ===== [server:main] use = egg:Paste#http [composite:main] use = egg:Paste#urlmap /api = django /download = download # ===== Django ===== [app:django] use = hpc+ai [app:hpc+ai] # hpc 与 ai 的配置文件位置! use = config:paste.d/django.ini#hpc+ai [app:hpc] use = config:paste.d/django.ini#hpc [app:ai] use = config:paste.d/django.ini#ai [app:download] use = egg:Paste#static document_root = %(download_dir)s # ===== Logger ===== # 配置全局的日志文件! [loggers] keys = root,django,requests [handlers] keys = console [formatters] keys = verbose # Loggers [logger_root] level = DEBUG handlers = console [logger_django] level = INFO handlers = console qualname = django propagate = 0 [logger_requests] level = INFO handlers = console qualname = requests propagate = 0 [logger_urllib3] level = INFO handlers = console qualname = urllib3 propagate = 0 # Handlers [handler_console] class = StreamHandler level = DEBUG formatter = verbose args = (sys.stdout,) [formatter_verbose] format=%(levelname)s %(asctime)s %(name)s Line:%(lineno)d %(processName)s %(threadName)s %(message)s
web配置文件!
[app:base] use = call:antilles_web.factory:make_application ALLOWED_HOSTS = ["${allow_hosts}"] LOG_DIR = "${log_dir}" SCRIPTS_DIR = "${script_dir}" DOWNLOAD_DIR = "${download_dir}" UPLOAD_DIR = "${upload_dir}" LOCK_DIR = "${lock_dir}" DATABASES = { "default": { "ENGINE" : "${db_engine}", "HOST" : "${db_host}", "NAME" : "${db_name}", "USER" : "${db_user}", "PASSWORD" : "${db_pass}" } } DOMAIN = "${domain}" SHARE_DIR = "${share_dir}" USER_SHARE_DIR = [${user_share_dir}] USE_LIBUSER = ${use_libuser} USER_BACKEND = "libuser" DEFAULT_BILL_GROUP = "default_bill_group" DEFAULT_CREDITS = 100 MIN_GID = 1000 MIN_UID = 1000 LOGIN_FAIL_MAX_CHANCE = ${login_fail_max_chance} SCHEDULER_SOFTWARE = "${scheduler_software}" SCHEDULER_QUEUE_AUTO_GET = ${scheduler_queues_auto_get} SCHEDULER_QUEUES = [${scheduler_queues}] SLURM_USER = "${slurm_user}" BROKER_URL = "amqp://127.0.0.1:5672/" WECHAT_AGENT_URL = "${wechat_agent_url}" WECHAT_TEMPLATE_ID = "${wechat_template_id}" SMS_AGENT_URL = "${sms_agent_url}" MAIL_AGENT_URL = "${mail_agent_url}" CONFLUENT_USER = "${confluent_user}" CONFLUENT_PASS = "${confluent_pass}" CONFLUENT_PORT = ${confluent_port} NODES_FILE = "${nodes_file}" AUTO_SYNC_NODES = ${auto_sync_nodes} REQUESTS_TIMEOUT = ${requests_timeout} INFLUXDB = { "host": "${influx_host}", "port": ${influx_port}, "username": "${influx_username}", "password": "${influx_password}", "database": "${influx_database}" } [app:ai_base] use = base AI_SRC_ROOT = "${ai_src_root}" AI_CONTAINER_ROOT = "${ai_container_root}" AI_TOPOLOGY_ROOT = "${ai_topology_root}" AI_MONITOR_MAX_WORKER = "${ai_monitor_max_worker}" [app:hpc+ai] use = ai_base INSTALLED_APPS = [ "django.contrib.auth", "django.contrib.contenttypes", "rest_framework", "antilles.common", "antilles.user", "antilles.ai", "antilles.logs", "antilles.optlog", "antilles.report", "antilles.alarm", "antilles.hpc", "antilles.cluster", "antilles.scheduler", "webconsole", "django_celery_results" ] [app:ai] use = ai_base INSTALLED_APPS = [ "django.contrib.auth", "django.contrib.contenttypes", "rest_framework", "antilles.common", "antilles.user", "antilles.ai", "antilles.logs", "antilles.optlog", "antilles.report", "antilles.alarm", "antilles.cluster", "antilles.scheduler", "webconsole", "django_celery_results" ] [app:hpc] use = base INSTALLED_APPS = [ "django.contrib.auth", "django.contrib.contenttypes", "rest_framework", "antilles.common", "antilles.user", "antilles.logs", "antilles.optlog", "antilles.report", "antilles.alarm", "antilles.hpc", "antilles.cluster", "antilles.scheduler", "webconsole", "django_celery_results" ]