自动提交token
This commit is contained in:
152
README.md
Normal file
152
README.md
Normal file
@@ -0,0 +1,152 @@
|
||||
# uploader
|
||||
|
||||
一个常驻扫描器:定期扫描目录中的 `.json` 文件,并以 `multipart/form-data` 方式上传到一个或多个 HTTP 接口;上传成功/跳过/失败会写入本地 SQLite 状态库,避免重复上传。
|
||||
|
||||
## 运行环境
|
||||
|
||||
- Python 3.9+(建议 3.10/3.11)
|
||||
- 依赖见 `requirements.txt`
|
||||
|
||||
## 快速开始(本地)
|
||||
|
||||
```bash
|
||||
cd /opt/uploader
|
||||
python3 -m venv .venv
|
||||
source .venv/bin/activate
|
||||
pip install -U pip
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 运行(示例)
|
||||
./.venv/bin/python uploader.py --dir /opt/uploader --interval 360
|
||||
```
|
||||
|
||||
## 配置(环境变量 / .env)
|
||||
|
||||
脚本会在启动时尝试加载当前工作目录下的 `.env`(需要安装了 `python-dotenv`)。
|
||||
|
||||
建议在 `/opt/uploader/.env` 配置:
|
||||
|
||||
```ini
|
||||
# 鉴权 token(必填)
|
||||
UPLOAD_TOKEN=your_token_here
|
||||
|
||||
# 上传接口列表(推荐用 ; 或 , 分隔;不要用 ':' 分隔)
|
||||
# 示例使用本机地址;请按你的实际服务地址修改
|
||||
UPLOAD_ENDPOINTS=http://127.0.0.1:8317/v0/management/auth-files;http://127.0.0.1:46344/v0/management/auth-files
|
||||
|
||||
# JSON 子目录(可选):从这些目录递归扫描 *.json
|
||||
# 注意:该变量支持 os.pathsep 分隔(Linux 为 ':',Windows 为 ';'),也支持逗号
|
||||
UPLOAD_JSON_SUBDIR=/usr/local/openai_register/tokens
|
||||
# 或多个:UPLOAD_JSON_SUBDIRS=/path/a:/path/b
|
||||
|
||||
# 默认 endpoint(当未设置 UPLOAD_ENDPOINTS 且未传 --endpoint 时使用)
|
||||
UPLOAD_ENDPOINT=http://127.0.0.1:8317/v0/management/auth-files
|
||||
|
||||
# 默认 SQLite DB 文件名(当未传 --db 时使用)
|
||||
UPLOAD_DB=upload_state.sqlite3
|
||||
```
|
||||
|
||||
### 环境变量说明
|
||||
|
||||
- `UPLOAD_TOKEN`:上传鉴权 token(支持 `Bearer xxx` 或直接 token)
|
||||
- `UPLOAD_ENDPOINTS`:多个上传接口 URL,用 `;` 或 `,` 分隔(不要用 `:` 分隔,因为 URL 自己包含 `http://` 和端口)
|
||||
- `UPLOAD_ENDPOINT`:默认接口 URL(兜底用)
|
||||
- `UPLOAD_DB`:默认 SQLite 状态库文件名(兜底用)
|
||||
- `UPLOAD_JSON_SUBDIRS` / `UPLOAD_JSON_SUBDIR`:扫描子目录(可选;不设置则扫描 `--dir` 本身)
|
||||
|
||||
## 命令行参数
|
||||
|
||||
```bash
|
||||
./.venv/bin/python uploader.py \
|
||||
--dir /opt/uploader \
|
||||
--interval 360 \
|
||||
--endpoint http://XXX:8317/v0/management/auth-files \
|
||||
--db upload_state.sqlite3 \
|
||||
--timeout 60 \
|
||||
--once
|
||||
```
|
||||
|
||||
常用参数:
|
||||
- `--dir`:工作目录
|
||||
- `--interval`:扫描间隔(秒)
|
||||
- `--endpoint`:当未配置 `UPLOAD_ENDPOINTS` 时使用的单个 endpoint
|
||||
- `--db`:SQLite 文件名/路径
|
||||
- `--once`:只跑一轮就退出
|
||||
|
||||
## Linux 部署(systemd 推荐)
|
||||
|
||||
### 1) 放置项目
|
||||
|
||||
```bash
|
||||
mkdir -p /opt/uploader
|
||||
# 将 uploader.py、requirements.txt、.env 放到 /opt/uploader
|
||||
```
|
||||
|
||||
### 2) 安装依赖
|
||||
|
||||
```bash
|
||||
cd /opt/uploader
|
||||
python3 -m venv .venv
|
||||
source .venv/bin/activate
|
||||
pip install -U pip
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 3) 创建 systemd 服务
|
||||
|
||||
创建 `/etc/systemd/system/uploader.service`:
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=uploader daemon
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/uploader
|
||||
ExecStart=/opt/uploader/.venv/bin/python /opt/uploader/uploader.py --dir /opt/uploader --interval 360
|
||||
Restart=always
|
||||
RestartSec=3
|
||||
Environment=PYTHONUNBUFFERED=1
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
启用并启动:
|
||||
|
||||
```bash
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now uploader
|
||||
systemctl status uploader
|
||||
```
|
||||
|
||||
## 实时看日志
|
||||
|
||||
### 方式 A:直接看 systemd 日志(推荐)
|
||||
|
||||
```bash
|
||||
journalctl -u uploader -f -o cat
|
||||
```
|
||||
|
||||
### 方式 B:输出到文件再 tail
|
||||
|
||||
在 `uploader.service` 的 `[Service]` 增加:
|
||||
|
||||
```ini
|
||||
StandardOutput=append:/var/log/uploader/uploader.log
|
||||
StandardError=append:/var/log/uploader/uploader.err.log
|
||||
```
|
||||
|
||||
并创建目录(如果服务用非 root 用户运行,请确保有写权限):
|
||||
|
||||
```bash
|
||||
mkdir -p /var/log/uploader
|
||||
# 如果 service 里设置了 User=uploader:
|
||||
# chown -R uploader:uploader /var/log/uploader
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl restart uploader
|
||||
|
||||
tail -n 200 -f /var/log/uploader/uploader.log
|
||||
```
|
||||
Reference in New Issue
Block a user