包含: - hair_service_sd: 换发型/换发色算法服务 (端口 8801) - photo_service: LoRA 训练调度服务 (端口 32678) - stable-diffusion-webui: SD WebUI 推理服务 (端口 57860) - kohya_ss_home: 训练环境代码 - meidaojia: 监控测试脚本 - setup.sh: 一键部署脚本 (conda环境恢复 + 配置生成 + 完整性检查) - start_all_services.sh: 启动3个服务 - configure.ini.template: 路径模板化 (BASE_DIR自动推导) - conda_envs/py310.yml: py310 环境定义 大文件 (weights/, models/, data/, conda_envs/*.tar.gz 等) 通过 .gitignore 排除, 由网盘单独上传。
69 lines
1.9 KiB
Python
Executable File
69 lines
1.9 KiB
Python
Executable File
import time
|
|
from redis.lock import Lock
|
|
import logging
|
|
|
|
QUEUE_NAME = 'task_queue'
|
|
# 配置
|
|
REDIS_HOST = 'r-2zevknj33pkqrrbzjp.redis.rds.aliyuncs.com'
|
|
REDIS_PORT = 6379
|
|
REDIS_DB = 0
|
|
DEFAULT_TIMEOUT = (60+10)
|
|
GPU_SERVER_TIME_OUT = 60
|
|
GPU_SERVER_LIST = 'gpu_server_list_key'
|
|
SERVER_LOG_ = "server_log"
|
|
SERVER_LOG_EVENT_LEN = 20
|
|
KEY_QUEUE_LOCK_NAME = 'KEY_QUEUE_LOCK_NAME'
|
|
SERVER_LIST_LOCK_NAME = 'SERVER_LIST_LOCK_NAME'
|
|
SERVER_LIST_LOG_LOCK_NAME = 'SERVER_LIST_LOG_LOCK_NAME'
|
|
|
|
# 创建 logger
|
|
logger = logging.getLogger(__name__)
|
|
logger.setLevel(logging.INFO) # 设置 logger 的级别
|
|
|
|
# 创建文件 handler
|
|
file_handler = logging.FileHandler('/var/log/meidaojia/config.log')
|
|
file_handler.setLevel(logging.INFO)
|
|
file_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
|
|
file_handler.setFormatter(file_formatter)
|
|
|
|
# 创建控制台 handler
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setLevel(logging.INFO)
|
|
console_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
|
|
console_handler.setFormatter(console_formatter)
|
|
|
|
# 添加 handlers 到 logger
|
|
logger.addHandler(file_handler)
|
|
logger.addHandler(console_handler)
|
|
|
|
def acquire_lock(redis_client, lock_name):
|
|
lock = Lock(
|
|
redis_client,
|
|
name=lock_name,
|
|
timeout=30,
|
|
blocking_timeout=10
|
|
)
|
|
acquired = lock.acquire()
|
|
if acquired:
|
|
return lock
|
|
return None
|
|
|
|
|
|
|
|
# def acquire_lock(r, acquire_timeout=10):
|
|
# """获取分布式锁"""
|
|
# end = time.time() + acquire_timeout
|
|
# while time.time() < end:
|
|
# # 使用 SETNX 尝试获取锁
|
|
# if r.setnx(TASK_REDIS_LOCK_NAME, 1):
|
|
# # 设置过期时间,防止死锁
|
|
# r.expire(TASK_REDIS_LOCK_NAME, 10)
|
|
# return True
|
|
# time.sleep(0.1)
|
|
# return False
|
|
# # return True
|
|
|
|
# def release_lock(r):
|
|
# """释放分布式锁"""
|
|
# r.delete(TASK_REDIS_LOCK_NAME)
|