import os import json import time from apscheduler.schedulers.background import BackgroundScheduler # 以 .env 文件中的环境变量为准, 检查是否存在 .env 文件, 没有则创建 if not os.path.exists('.env'): print('请输入环境变量参数, 将会写入 .env 文件中') MYSQL_HOST = input('MYSQL_HOST: ') MYSQL_PORT = input('MYSQL_PORT: ') MYSQL_USER = input('MYSQL_USER: ') MYSQL_PASS = input('MYSQL_PASS: ') MYSQL_NAME = input('MYSQL_NAME: ') MILVUS_HOST = input('MILVUS_HOST: ') MILVUS_PORT = input('MILVUS_PORT: ') OSS_HOST = input('OSS_HOST: ') OSS_ACCESS_KEY_ID = input('OSS_ACCESS_KEY_ID: ') OSS_ACCESS_KEY_SECRET = input('OSS_ACCESS_KEY_SECRET: ') with open('.env', 'w') as f: f.write(f'MYSQL_HOST={MYSQL_HOST}\n') f.write(f'MYSQL_PORT={MYSQL_PORT}\n') f.write(f'MYSQL_USER={MYSQL_USER}\n') f.write(f'MYSQL_PASS={MYSQL_PASS}\n') f.write(f'MYSQL_NAME={MYSQL_NAME}\n') f.write(f'MILVUS_HOST={MILVUS_HOST}\n') f.write(f'MILVUS_PORT={MILVUS_PORT}\n') f.write(f'OSS_HOST={OSS_HOST}\n') f.write(f'OSS_ACCESS_KEY_ID={OSS_ACCESS_KEY_ID}\n') f.write(f'OSS_ACCESS_KEY_SECRET={OSS_ACCESS_KEY_SECRET}\n') # 读取 .env 文件中的环境变量 with open('.env', 'r') as f: env = f.readlines() env = list(filter(lambda x: not x.startswith('#') and not x.startswith('\n') and len(x.split('=')) == 2, env)) env = list(map(lambda x: x.replace('\n', '').split('='), env)) env = {k: v for k, v in env} print(json.dumps(env, indent=4, ensure_ascii=False)) MYSQL_HOST = env.get('MYSQL_HOST', 'localhost') MYSQL_PORT = env.get('MYSQL_PORT', 3306) MYSQL_USER = env.get('MYSQL_USER') MYSQL_PASS = env.get('MYSQL_PASS') MYSQL_NAME = env.get('MYSQL_NAME') MILVUS_HOST = env.get('MILVUS_HOST') MILVUS_PORT = env.get('MILVUS_PORT') OSS_HOST = env.get('OSS_HOST') OSS_ACCESS_KEY_ID = env.get('OSS_ACCESS_KEY_ID') OSS_ACCESS_KEY_SECRET = env.get('OSS_ACCESS_KEY_SECRET') # 创建上传图片的临时目录 UPLOAD_PATH = '/tmp/search-images' if not os.path.exists(UPLOAD_PATH): os.makedirs(UPLOAD_PATH) # 创建压缩图片的临时目录 IMAGES_PATH = '/tmp/images' if not os.path.exists(IMAGES_PATH): os.makedirs(IMAGES_PATH) # 创建sqlite3数据库目录 SQLITE3_PATH = '/tmp/sqlite3' if not os.path.exists(SQLITE3_PATH): os.makedirs(SQLITE3_PATH) def clear_images(): print('开始清理创建时间大于30分钟的图片缓存') for file in os.listdir(IMAGES_PATH): if os.path.getmtime(os.path.join(IMAGES_PATH, file)) < time.time() - 30 * 60: print('清理图片缓存:', file) os.remove(os.path.join(IMAGES_PATH, file)) # 构建一个定时任务每30分钟清理一次图片缓存 scheduler = BackgroundScheduler() scheduler.add_job(clear_images, 'interval', minutes=30) scheduler.start()