xtquant-share 1.2.2__tar.gz → 1.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/PKG-INFO +1 -1
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/pyproject.toml +1 -1
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xqshare/server.py +40 -17
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xtquant_share.egg-info/PKG-INFO +1 -1
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/LICENSE +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/README.md +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/setup.cfg +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/tests/test_auth.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/tests/test_client.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/tests/test_client_permission.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/tests/test_integration.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/tests/test_server.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/tests/test_server_permission.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/tests/test_tools_common.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xqshare/__init__.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xqshare/auth.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xqshare/client.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xqshare/tools/__init__.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xqshare/tools/common.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xqshare/tools/xtdata.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xqshare/tools/xttrader.py +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xtquant_share.egg-info/SOURCES.txt +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xtquant_share.egg-info/dependency_links.txt +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xtquant_share.egg-info/entry_points.txt +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xtquant_share.egg-info/requires.txt +0 -0
- {xtquant_share-1.2.2 → xtquant_share-1.2.4}/xtquant_share.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "xtquant-share"
|
|
7
|
-
version = "1.2.
|
|
7
|
+
version = "1.2.4"
|
|
8
8
|
description = "Xtreme Quant Share - eXtreme transparent sharing proxy for XtQuant on macOS/Linux"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "GPL-3.0-only"
|
|
@@ -921,8 +921,8 @@ def _cmd_background(args):
|
|
|
921
921
|
cmd += ["--key", args.key]
|
|
922
922
|
if args.log_level != "INFO":
|
|
923
923
|
cmd += ["--log-level", args.log_level]
|
|
924
|
-
|
|
925
|
-
|
|
924
|
+
# 始终透传 env_file(已经是绝对路径或确定的路径)
|
|
925
|
+
cmd += ["--env-file", args.env_file]
|
|
926
926
|
|
|
927
927
|
with open(log_file, "a", encoding="utf-8") as log_f:
|
|
928
928
|
if sys.platform == "win32":
|
|
@@ -947,7 +947,7 @@ def _cmd_background(args):
|
|
|
947
947
|
|
|
948
948
|
print(f" xqshare-server 已在后台启动 (PID: {proc.pid})")
|
|
949
949
|
print(f" 日志文件: {log_file}")
|
|
950
|
-
print(f" 查看日志: xqshare-server logs")
|
|
950
|
+
print(f" 查看日志: xqshare-server logs -f")
|
|
951
951
|
print(f" 停止服务: xqshare-server stop")
|
|
952
952
|
|
|
953
953
|
|
|
@@ -1061,6 +1061,17 @@ def _cmd_status(args):
|
|
|
1061
1061
|
print(f" 执行 xqshare-server stop 清理残留文件")
|
|
1062
1062
|
|
|
1063
1063
|
|
|
1064
|
+
def _default_env_file():
|
|
1065
|
+
"""默认 .env 文件路径:优先查找 exe/脚本所在目录,其次当前目录"""
|
|
1066
|
+
import sys
|
|
1067
|
+
# 获取可执行文件所在目录(pip install 后是 Scripts/ 目录)
|
|
1068
|
+
exe_dir = os.path.dirname(os.path.abspath(sys.executable))
|
|
1069
|
+
exe_env = os.path.join(exe_dir, ".env")
|
|
1070
|
+
if os.path.exists(exe_env):
|
|
1071
|
+
return exe_env
|
|
1072
|
+
return ".env"
|
|
1073
|
+
|
|
1074
|
+
|
|
1064
1075
|
def main():
|
|
1065
1076
|
"""命令行入口函数"""
|
|
1066
1077
|
import argparse
|
|
@@ -1070,25 +1081,28 @@ def main():
|
|
|
1070
1081
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
1071
1082
|
epilog="""
|
|
1072
1083
|
示例:
|
|
1073
|
-
xqshare-server
|
|
1074
|
-
xqshare-server start
|
|
1075
|
-
xqshare-server background # 后台启动
|
|
1084
|
+
xqshare-server start # 后台启动(推荐)
|
|
1085
|
+
xqshare-server start --port 18813 # 指定端口后台启动
|
|
1076
1086
|
xqshare-server stop # 停止后台服务
|
|
1077
1087
|
xqshare-server status # 查看运行状态
|
|
1078
1088
|
xqshare-server logs # 查看最近 50 行日志
|
|
1079
1089
|
xqshare-server logs -f # 实时跟踪日志(tail -f)
|
|
1080
1090
|
xqshare-server logs -n 100 # 查看最近 100 行日志
|
|
1081
|
-
xqshare-server
|
|
1091
|
+
xqshare-server fg # 前台启动(调试用)
|
|
1082
1092
|
|
|
1083
1093
|
环境变量:
|
|
1084
1094
|
XQSHARE_PORT 服务端口 (默认: 18812)
|
|
1085
1095
|
QMT_USERDATA_PATH QMT userdata_mini 目录路径
|
|
1096
|
+
|
|
1097
|
+
.env 文件查找顺序:
|
|
1098
|
+
1. xqshare-server.exe 所在目录(如 C:\\install\\qmt_venv\\Scripts\\.env)
|
|
1099
|
+
2. 当前工作目录
|
|
1086
1100
|
"""
|
|
1087
1101
|
)
|
|
1088
1102
|
|
|
1089
1103
|
subparsers = parser.add_subparsers(dest="command")
|
|
1090
1104
|
|
|
1091
|
-
# 公共参数(start 和
|
|
1105
|
+
# 公共参数(start 和 fg 共用)
|
|
1092
1106
|
def add_server_args(p):
|
|
1093
1107
|
p.add_argument("--host", default="0.0.0.0", help="监听地址 (默认: 0.0.0.0)")
|
|
1094
1108
|
p.add_argument("--port", type=int, default=None, help="监听端口 (默认: 18812 或 XQSHARE_PORT)")
|
|
@@ -1096,15 +1110,18 @@ def main():
|
|
|
1096
1110
|
p.add_argument("--cert", help="SSL 证书文件")
|
|
1097
1111
|
p.add_argument("--key", help="SSL 私钥文件")
|
|
1098
1112
|
p.add_argument("--log-level", default="INFO", help="日志级别 (默认: INFO)")
|
|
1099
|
-
p.add_argument("--env-file", default=
|
|
1113
|
+
p.add_argument("--env-file", default=None, help="环境变量文件 (默认: 自动查找 exe 目录或当前目录的 .env)")
|
|
1100
1114
|
|
|
1101
|
-
# start
|
|
1102
|
-
start_parser = subparsers.add_parser("start", help="
|
|
1115
|
+
# start 子命令(后台,推荐)
|
|
1116
|
+
start_parser = subparsers.add_parser("start", help="后台启动 server(推荐)", aliases=["background", "bg"])
|
|
1103
1117
|
add_server_args(start_parser)
|
|
1104
1118
|
|
|
1105
|
-
#
|
|
1106
|
-
|
|
1107
|
-
add_server_args(
|
|
1119
|
+
# fg 子命令(前台,调试用)
|
|
1120
|
+
fg_parser = subparsers.add_parser("fg", help="前台启动 server(调试用)", aliases=["foreground"])
|
|
1121
|
+
add_server_args(fg_parser)
|
|
1122
|
+
|
|
1123
|
+
# help 子命令
|
|
1124
|
+
subparsers.add_parser("help", help="显示帮助信息")
|
|
1108
1125
|
|
|
1109
1126
|
# stop 子命令
|
|
1110
1127
|
subparsers.add_parser("stop", help="停止后台运行的 server")
|
|
@@ -1124,11 +1141,17 @@ def main():
|
|
|
1124
1141
|
parser.add_argument("--cert", help="SSL 证书文件")
|
|
1125
1142
|
parser.add_argument("--key", help="SSL 私钥文件")
|
|
1126
1143
|
parser.add_argument("--log-level", default="INFO", help="日志级别 (默认: INFO)")
|
|
1127
|
-
parser.add_argument("--env-file", default=
|
|
1144
|
+
parser.add_argument("--env-file", default=None, help="环境变量文件 (默认: 自动查找 exe 目录或当前目录的 .env)")
|
|
1128
1145
|
|
|
1129
1146
|
args = parser.parse_args()
|
|
1130
1147
|
|
|
1131
|
-
|
|
1148
|
+
# --env-file 未指定时自动查找
|
|
1149
|
+
if not hasattr(args, 'env_file') or args.env_file is None:
|
|
1150
|
+
args.env_file = _default_env_file()
|
|
1151
|
+
|
|
1152
|
+
if args.command == "help":
|
|
1153
|
+
parser.print_help()
|
|
1154
|
+
elif args.command in ("start", "background", "bg"):
|
|
1132
1155
|
_cmd_background(args)
|
|
1133
1156
|
elif args.command == "stop":
|
|
1134
1157
|
_cmd_stop(args)
|
|
@@ -1137,7 +1160,7 @@ def main():
|
|
|
1137
1160
|
elif args.command == "logs":
|
|
1138
1161
|
_cmd_logs(args)
|
|
1139
1162
|
else:
|
|
1140
|
-
#
|
|
1163
|
+
# fg / foreground 或无子命令,均为前台启动
|
|
1141
1164
|
start_server(
|
|
1142
1165
|
host=args.host,
|
|
1143
1166
|
port=args.port,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|