Metadata-Version: 2.4
Name: ldnode
Version: 2.14.5
Summary: 量化计算节点
Requires-Python: >=3.13
Description-Content-Type: text/markdown
Requires-Dist: aiohttp>=3.13.3
Requires-Dist: apscheduler>=3.11.1
Requires-Dist: clickhouse-driver>=0.2.9
Requires-Dist: cos-python-sdk-v5>=1.9.38
Requires-Dist: deltalake>=1.1.4
Requires-Dist: easyquotation>=0.7.7
Requires-Dist: humanize>=4.14.0
Requires-Dist: loguru>=0.7.3
Requires-Dist: numpy>=2.2.4
Requires-Dist: option-price>=0.2.0
Requires-Dist: pandas>=2.2.3
Requires-Dist: patito>=0.8.5
Requires-Dist: pdoc>=15.0.3
Requires-Dist: polars-ds>=0.10.1
Requires-Dist: polars[async,numpy,pandas,pyarrow,pydantic,timezone]==1.37.1
Requires-Dist: py-spy>=0.4.1
Requires-Dist: pyarrow>=19.0.0
Requires-Dist: pydantic>=2.10.6
Requires-Dist: pydantic-settings>=2.8.1
Requires-Dist: pymongo>=4.13.0
Requires-Dist: pytest>=8.4.2
Requires-Dist: pytest-cov>=7.0.0
Requires-Dist: python-dotenv>=1.0.1
Requires-Dist: pyxirr>=0.10.8
Requires-Dist: redis>=5.2.1
Requires-Dist: scikit-learn>=1.7.1
Requires-Dist: setproctitle>=1.3.7
Requires-Dist: tabulate>=0.9.0
Requires-Dist: tushare>=1.4.24
Requires-Dist: websockets>=15.0.1
Requires-Dist: polars-event-backtest==2.13.3
Requires-Dist: ldfunctions==2.13.1
Requires-Dist: psutil>=7.0.0
Requires-Dist: optuna>=4.7.0
Requires-Dist: python-socks>=2.8.1
Requires-Dist: minio>=7.2.20

# 禄得量化计算端

## Code Structure

1. 运行器(Runner): 程序入口，负责程序启动，主进程循环，以及加载各个类型的工作进程。
2. 日志器(Logger): 负责主进程、工作进程的日志输出统一管理。
3. 连接器(Connector): 负责提供计算端上线、以及和服务端通信的细节实现。
4. 计算器(Calculator): 负责处理各种类型的计算任务，对外暴露计算函数接口。
5. 载入器(Loader): 负责加载计算端所需的数据(Parquet或DeltaLake)、以及数据预处理和生成。
6. 监视器(Monitor): 负责监控计算端运行情况并且定时上报。

## Development

### 在项目根目录下创建配置文件
```bash
cp .env.example .env
vim .env
```

### 以开发模式启动计算端
```bash
uv sync
uv run ldnode
```

### 构建并发布计算端版本
```bash
uv build
```

## Production

### 准备Python3.13版本

### 创建工作目录
```bash
mkdir ldnode && cd ldnode
python3 -m venv .venv
source ./.venv/bin/activate
```

### 安装LDNode
```bash
pip install ldnode -i https://pypi.lude.site/simple
```

### 启动LDNode
```bash
vim .env # 创建启动配置
ldnode # 启动进程
```

### macOS 开机自启（launchd）

通过 LaunchDaemon 注册为系统级服务，无需 GUI 登录即可运行（适合 SSH 远程部署）。

```bash
# 安装服务（需 sudo，默认工作目录为 ~/ldnode）
sudo ./deploy/macos/install.sh [工作目录]

# 卸载服务
sudo ./deploy/macos/uninstall.sh
```

安装后行为：
- 开机自动启动（不依赖用户登录）
- 以安装时的用户身份运行（非 root）
- 进程崩溃 10 秒后自动重启
- 文件描述符限制自动设置为 65535
- 日志位于 `~/Library/Logs/lude-node/`

常用管理命令：
```bash
sudo launchctl list | grep site.lude.node   # 查看状态
sudo launchctl bootout system/site.lude.node  # 停止
sudo launchctl bootstrap system /Library/LaunchDaemons/site.lude.node.plist  # 启动
```
