fix: CTP 连接后 locale 崩溃,PM2 设置 LANG=C.UTF-8
vnpy_ctp C++ 扩展在缺 locale 时会 terminate;补充 SimNow 备用前置说明。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,4 +1,9 @@
|
||||
import os
|
||||
|
||||
# vnpy_ctp C++ 扩展需要有效 locale,否则 CTP 登录后可能崩溃
|
||||
os.environ.setdefault("LANG", "C.UTF-8")
|
||||
os.environ.setdefault("LC_ALL", "C.UTF-8")
|
||||
|
||||
import sqlite3
|
||||
import time
|
||||
import threading
|
||||
|
||||
@@ -28,7 +28,9 @@ need_install git git
|
||||
|
||||
# vnpy_ctp 在 Linux 上需本地编译(Meson + pkg-config 查找 python3-dev)
|
||||
echo "==> 安装 vnpy_ctp 编译依赖..."
|
||||
apt-get install -y build-essential python3-dev pkg-config
|
||||
apt-get install -y build-essential python3-dev pkg-config locales
|
||||
locale-gen en_US.UTF-8 2>/dev/null || true
|
||||
update-locale LANG=C.UTF-8 LC_ALL=C.UTF-8 2>/dev/null || true
|
||||
|
||||
if ! command -v pm2 &>/dev/null; then
|
||||
echo "==> 安装 PM2..."
|
||||
|
||||
@@ -346,6 +346,8 @@ pm2 restart qihuo
|
||||
|-----------|------|
|
||||
| `pip install vnpy_ctp` 编译失败 / `Python dependency not found` | 安装 `build-essential python3-dev pkg-config` 后重试 |
|
||||
| CTP 连接超时 | 检查前置 IP、端口、SimNow 是否维护、是否在允许连接时段 |
|
||||
| 连接后立即崩溃 `locale::facet::_S_create_c_locale` | 系统 locale 未配置;`export LANG=C.UTF-8 LC_ALL=C.UTF-8` 后 `pm2 restart qihuo`,或 `git pull` 使用最新 `ecosystem.config.cjs` |
|
||||
| 服务器 `180.168.146.187` 超时 | 换 SimNow 备用前置 `182.254.243.31:30001/30011`(见 [SIMNOW.md](./SIMNOW.md)) |
|
||||
| 已连接但下单拒单 | 检查合约代码、价格精度、是否有足够保证金 |
|
||||
|
||||
---
|
||||
|
||||
@@ -139,6 +139,15 @@ tcp://IP:端口
|
||||
pm2 restart qihuo
|
||||
```
|
||||
|
||||
**云服务器若 `180.168.146.187` 端口超时**,可改用备用前置(交易时段):
|
||||
|
||||
```env
|
||||
SIMNOW_TD_ADDRESS=tcp://182.254.243.31:30001
|
||||
SIMNOW_MD_ADDRESS=tcp://182.254.243.31:30011
|
||||
```
|
||||
|
||||
服务器上用 `nc -zv 182.254.243.31 30001` 验证连通后再配置。
|
||||
|
||||
### 3. 网页端连接 CTP
|
||||
|
||||
1. 登录本系统
|
||||
@@ -174,6 +183,7 @@ python scripts/test_simnow.py
|
||||
| 报错 **4097** / 握手失败 | `pip install -U vnpy vnpy_ctp`,`.env` 设 `SIMNOW_ENV=实盘` |
|
||||
| **不合法的登录** | 投资者代码/密码错,或未在快期改过一次密码 |
|
||||
| 快期能登、脚本不能 | 多为网络或前置地址,换 SimNow 官网其他组前置试 |
|
||||
| 连上后进程崩溃 `locale::facet::_S_create_c_locale` | 执行 `export LANG=C.UTF-8 LC_ALL=C.UTF-8`,`pm2 restart qihuo --update-env` |
|
||||
|
||||
### 提示「未安装 vnpy / vnpy_ctp」
|
||||
|
||||
|
||||
@@ -11,6 +11,9 @@ module.exports = {
|
||||
max_memory_restart: "300M",
|
||||
env: {
|
||||
NODE_ENV: "production",
|
||||
LANG: "C.UTF-8",
|
||||
LC_ALL: "C.UTF-8",
|
||||
LC_CTYPE: "C.UTF-8",
|
||||
},
|
||||
error_file: "/opt/qihuo/logs/pm2-error.log",
|
||||
out_file: "/opt/qihuo/logs/pm2-out.log",
|
||||
|
||||
@@ -6,6 +6,9 @@ import os
|
||||
import socket
|
||||
import sys
|
||||
|
||||
os.environ.setdefault("LANG", "C.UTF-8")
|
||||
os.environ.setdefault("LC_ALL", "C.UTF-8")
|
||||
|
||||
BASE = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
sys.path.insert(0, BASE)
|
||||
|
||||
|
||||
@@ -7,6 +7,10 @@ import threading
|
||||
import time
|
||||
from typing import Any, Optional
|
||||
|
||||
# vnpy_ctp C++ 在部分 Linux 上缺 locale 会抛 std::runtime_error
|
||||
os.environ.setdefault("LANG", "C.UTF-8")
|
||||
os.environ.setdefault("LC_ALL", "C.UTF-8")
|
||||
|
||||
from ctp_symbol import ths_to_vnpy_symbol, to_vnpy_exchange
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
Reference in New Issue
Block a user