89 lines
2.9 KiB
Python
89 lines
2.9 KiB
Python
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 = int(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 = int(env.get('MILVUS_PORT', 19530))
|
|
|
|
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()
|