Spaces:
Sleeping
Sleeping
| # 如果命令失败则立即退出 | |
| set -e | |
| # 定义临时密钥文件的路径 | |
| KEY_FILE_PATH="/tmp/keys.txt" | |
| echo "--- 正在检查 Secrets ---" | |
| # 检查 API_PASSWORD 是否已设置 | |
| if [ -z "${API_PASSWORD}" ]; then | |
| echo "[错误] 必须在 Hugging Face Secrets 中设置 API_PASSWORD !" | |
| exit 1 | |
| fi | |
| # 检查 key_list 是否已设置 | |
| if [ -z "${key_list}" ]; then | |
| echo "[错误] 必须在 Hugging Face Secrets 中设置 key_list !" | |
| exit 1 | |
| fi | |
| echo "--- 正在从 Secret 'key_list' 创建临时密钥文件 (${KEY_FILE_PATH}) ---" | |
| # 从环境变量 key_list 读取内容,并写入临时文件 | |
| # 使用 'echo -e' 来解释可能存在的 '\n' 换行符 | |
| # 将标准错误重定向到 /dev/null 以避免打印潜在的密钥内容(尽管通常 echo 不会) | |
| echo -e "${key_list}" > "${KEY_FILE_PATH}" 2>/dev/null | |
| # 验证文件是否创建成功且非空 | |
| if [ ! -s "${KEY_FILE_PATH}" ]; then | |
| echo "[错误] 创建密钥文件失败或文件为空!请检查 'key_list' Secret 的内容。" | |
| exit 1 | |
| fi | |
| echo "--- 密钥文件已生成 ---" | |
| # !!! 【重要】生产环境中不要取消下面这行的注释,避免日志泄露 !!! | |
| # echo "密钥文件内容预览 (前几行):" | |
| # head -n 3 "${KEY_FILE_PATH}" | |
| echo "--- 正在启动 api-pool 服务 ---" | |
| # 使用 exec 执行 Go 程序,将脚本进程替换为 Go 程序进程 | |
| # 将临时文件路径传给 --key-file | |
| # 将从 Secret 读取的密码传给 --password | |
| # 将地址设为 0.0.0.0 以便容器外访问 | |
| # 传入其他您指定的参数 | |
| exec /app/api-pool \ | |
| --key-file "${KEY_FILE_PATH}" \ | |
| --target-url "https://api.siliconflow.cn" \ | |
| --port "6969" \ | |
| --address "0.0.0.0" \ | |
| --password "${API_PASSWORD}" \ | |
| --max-workers=1000 \ | |
| --max-queue=2000 | |
| # 注意:--max-workers 和 --max-queue 值较高,请关注 Space 资源使用情况 |