""" Django settings for dingxin_toolbox_drf project. Generated by 'django-admin startproject' using Django 4.2.7. For more information on this file, see https://docs.djangoproject.com/en/4.2/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/4.2/ref/settings/ """ from pathlib import Path import os from env import ENV # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent print(BASE_DIR) # 服务器IP # # SERVER_IP = '172.16.1.63' # # REDIS_IP = '172.16.1.63' # SERVER_IP = '172.16.1.222' # REDIS_IP = '172.16.1.222' # # SERVER_IP = '' CONFIG = { 'dev': { 'SERVER_IP': '172.16.1.168', 'WEB_SERVER_IP': '172.16.1.168', 'DB': { "HOST": 'home.rogersun.cn', "PORT": 3306, "USER": "dingxin", "PASSWORD": "cine123456", "NAME": "dingxin_toolbox", }, 'REDIS_IP': '172.16.1.168', 'ECARD_DB': { "HOST": '10.10.0.61', "PORT": 3306, "USER": "test", "PASSWORD": "cine123456", "NAME": "fws_dgp_card_db", }, 'AX_CLOUD_DB': { "HOST": '172.16.1.63', "PORT": 3306, "USER": "root", "PASSWORD": "Cine123456", "NAME": "axshare", } }, 'local': { 'SERVER_IP': '127.0.0.1', 'WEB_SERVER_IP': '127.0.0.1', 'DB': { "HOST": 'home.rogersun.cn', "PORT": 3306, "USER": "dingxin", "PASSWORD": "cine123456", "NAME": "dingxin_toolbox", }, # 'DB': { # "HOST": '172.16.1.63', # "PORT": 3306, # "USER": "root", # "PASSWORD": "Cine123456", # "NAME": "dingxin_toolbox", # }, 'REDIS_IP': '127.0.0.1', 'ECARD_DB': { "HOST": '10.10.0.61', "PORT": 3306, "USER": "test", "PASSWORD": "cine123456", "NAME": "fws_dgp_card_db", }, 'AX_CLOUD_DB': { "HOST": '172.16.1.63', "PORT": 3306, "USER": "root", "PASSWORD": "Cine123456", "NAME": "axshare", } }, 'prd': { 'SERVER_IP': '172.16.1.63', 'WEB_SERVER_IP': '172.16.1.222', 'DB': { "HOST": '172.16.1.63', "PORT": 3306, "USER": "root", "PASSWORD": "Cine123456", "NAME": "dingxin_toolbox", }, 'REDIS_IP': '172.16.1.63', 'ECARD_DB': { "HOST": '10.10.0.61', "PORT": 3306, "USER": "test", "PASSWORD": "cine123456", "NAME": "fws_dgp_card_db", }, 'AX_CLOUD_DB': { "HOST": '172.16.1.63', "PORT": 3306, "USER": "root", "PASSWORD": "Cine123456", "NAME": "axshare", } } } # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'django-insecure-hfujy!ih1uvio_p^cfdj^%8juf_wdb@szu$t=aaacd)^(zf@b%' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True # 增加异步和同步多线程的支持 os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true" ALLOWED_HOSTS = ['*'] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'channels', # 'daphne', 'django.contrib.staticfiles', 'corsheaders', # coreapi生成接口文档 'rest_framework', 'rest_framework.authtoken', # Token验证应用 'django_filters', 'update', 'mock', 'dspt_api', 'product', 'config', 'django_celery_beat', # 定时任务 'django_celery_results', # 定时任务 ] MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'dingxin_toolbox_drf.http.SetRemoteAddrFromForwardedFor', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'dingxin_toolbox_drf.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'dingxin_toolbox_drf.wsgi.application' # 设置ASGI ASGI_APPLICATION = 'dingxin_toolbox_drf.routing.application' # Database # https://docs.djangoproject.com/en/4.2/ref/settings/#databases DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", # "HOST": "home.rogersun.cn", "HOST": CONFIG[ENV]['DB']['HOST'], "PORT": CONFIG[ENV]['DB']['PORT'], "USER": CONFIG[ENV]['DB']['USER'], "PASSWORD": CONFIG[ENV]['DB']['PASSWORD'], "NAME": CONFIG[ENV]['DB']['NAME'], } } CACHES = { "default": { 'BACKEND': 'django_redis.cache.RedisCache', # "BACKEND": "django.core.cache.backends.redis.RedisCache", "LOCATION": f"redis://{CONFIG[ENV]['REDIS_IP']}:6379", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } } REST_FRAMEWORK_EXTENSIONS = { 'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 1, # 缓存时间 'DEFAULT_USE_CACHE': 'default', # 缓存存储 'DEFAULT_OBJECT_CACHE_KEY_FUNC': 'rest_framework_extensions.utils.default_object_cache_key_func', 'DEFAULT_LIST_CACHE_KEY_FUNC': 'rest_framework_extensions.utils.default_list_cache_key_func', } SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 使用Redis做为session缓存 SESSION_CACHE_ALIAS = 'default' # 指定本地session使用本地缓存名称是default # Password validation # https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] # Internationalization # https://docs.djangoproject.com/en/4.2/topics/i18n/ LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True # USE_I18N = False USE_TZ = True # USE_TZ = False # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.2/howto/static-files/ STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') # STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # Default primary key field type # https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' # 设置日志 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s' }, 'simple': { 'format': '%(levelname)s %(module)s %(lineno)d %(message)s' }, }, 'filters': { 'require_debug_true': { '()': 'django.utils.log.RequireDebugTrue', }, }, 'handlers': { 'console': { 'level': 'DEBUG', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', 'formatter': 'simple' }, 'file': { 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', 'filename': os.path.join(BASE_DIR, "logs", "dingxin.log"), 'maxBytes': 300 * 1024 * 1024, 'backupCount': 10, 'formatter': 'verbose' }, }, 'loggers': { 'django': { 'handlers': ['console', 'file'], 'propagate': True, }, } } REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.TokenAuthentication',), # 配置验证方式 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema', # 配置接口文档 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'], } # 跨域配置 CORS_ALLOW_CREDENTIALS = True CORS_ORIGIN_ALLOW_ALL = True # 默认时间格式 # DATE_FORMAT = '%Y-%m-%d' # 设置日期格式为年/月/日 # TIME_FORMAT = '%H:%M:%S' # 设置时间格式为小时:分钟 # DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S" # 设置日期时间格式为年/月/日 小时:分钟 # Channel 设置 CHANNEL_LAYERS = { "default": { "BACKEND": "channels_redis.core.RedisChannelLayer", "CONFIG": { "hosts": [(CONFIG[ENV]['REDIS_IP'], 6379)], # "hosts": [os.environ.get('REDIS_URL', 'redis://127.0.0.1:6379/1')] } } } # Celery 定时任务 CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler' CELERY_BROKER_URL = f"redis://{CONFIG[ENV]['REDIS_IP']}:6379/0" CELERY_RESULT_BACKEND = "django-db" CELERY_TIMEZONE = "Asia/Shanghai" CELERY_ENABLE_UTC = False CELERY_RESULT_EXTENDED = True # 启用后才会记录 task_name、date_started 等字段 CELERY_TASK_TRACK_STARTED = True # 记录任务开始时间 CELERY_ACCEPT_CONTENT = ['json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' CELERY_TASK_RESULT_EXPIRES = 3600