haikang_api/config/env.py

98 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import argparse
import os
import sys
from dotenv import load_dotenv
from functools import lru_cache
from pydantic import computed_field
from pydantic_settings import BaseSettings
from typing import Literal
class HaiKangSettings:
"""
海康平台配置
"""
HAIKANG_URL = 'https://192.168.89.230'
HAIKANG_PORT = 443
HAIKANG_AK = '29862915'
HAIKANG_SK = '3QlsmcyadBqu4OpVoxsJ'
HAIKANG_ACCESS_TOKEN_URL = '/api/v1/oauth/token'
# HAIKANG_DOOR_STATES_URL = '/api/v1/door/states'
HAIKANG_DOOR_STATES_URL = '/api/acs/v1/door/states'
HAIKANG_DOOR_DOCONTROL_URL = '/api/acs/v1/door/doControl'
HAIKANG_DOOR_ENVENTS_URL = '/api/acs/v2/door/events'
HAIKANG_DOOR_SEARCH = '/api/resource/v2/door/search'
HAIKANG_DOOR_ONLINE_STATUS = '/api/nms/v1/online/acs_device/get'
HAIKANG_APPLICATION_ONETOMANY_URL = '/api/frs/v1/application/oneToMany'
HAIKANG_PICTURE_CHECK_URL = '/api/frs/v1/face/picture/check'
HAIKANG_FACECAPATURE_SEARCH = '/api/frs/v1/event/face_capture/search'
HAIKANG_FACE_GROUP_URL = '/api/frs/v1/face/group'
HAIKANG_VISITOR_RECORD_SEARCH = '/api/visitor/v2/appointment/records'
HAIKANG_VISITOR_RECORD_PICTURES = '/api/visitor/v1/record/pictures'
HAIKANG_PERSON_LIST = '/api/resource/v2/person/personList'
HAIKANG_GET_PERSON_PICTURE = '/api/resource/v1/person/picture'
HAIKANG_FACE_GROUP_ADDITION = '/api/frs/v1/face/group/single/addition'
HAIKANG_FACE_SIGLE_ADDITION = '/api/frs/v1/face/single/addition'
HAIKANG_FACE_DELETE = '/api/frs/v1/face/deletion'
HAIKANG_FACE_SAVE_PATH = "./face_images"
class GetConfig:
"""
获取配置
"""
def __init__(self):
self.parse_cli_args()
#
@lru_cache()
def get_haikang_config(self):
"""
获取海康平台配置
"""
return HaiKangSettings()
@staticmethod
def parse_cli_args():
"""
解析命令行参数
"""
if 'uvicorn' in sys.argv[0]:
# 使用uvicorn启动时命令行参数需要按照uvicorn的文档进行配置无法自定义参数
pass
else:
# 使用argparse定义命令行参数
parser = argparse.ArgumentParser(description='命令行参数')
parser.add_argument('--env', type=str, default='dev', help='运行环境')
# 解析命令行参数
args = parser.parse_args()
# 设置环境变量如果未设置命令行参数默认APP_ENV为dev
os.environ['APP_ENV'] = args.env if args.env else 'dev'
# 读取运行环境
run_env = os.environ.get('APP_ENV', '')
# 运行环境未指定时默认加载.env.dev
env_file = '.env.dev'
# 运行环境不为空时按命令行参数加载对应.env文件
if run_env != '':
env_file = f'.env.{run_env}'
# 加载配置
load_dotenv(env_file)
# 实例化获取配置类
get_config = GetConfig()
# 海康平台配置
HaiKangConfig = get_config.get_haikang_config()