61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
# -*- coding: gbk -*-
|
||
import grpc
|
||
import qmt_service_pb2
|
||
import qmt_service_pb2_grpc
|
||
import time
|
||
|
||
class QmtServiceServicer(qmt_service_pb2_grpc.QmtServiceServicer):
|
||
"""实现QMT服务(单线程版本)"""
|
||
|
||
def GetAsset(self, request, context):
|
||
"""实现GetAsset方法"""
|
||
print(f"收到查询请求,账户: {request.account_id}")
|
||
|
||
# 这里是你调用大QMT API获取数据的逻辑
|
||
# 实际使用时,请替换为真实的xt_trader查询代码
|
||
# 参考: asset = xt_trader.query_stock_asset(acc)
|
||
|
||
# 模拟数据
|
||
total = 1000000.0
|
||
cash = 500000.0
|
||
market_val = 500000.0
|
||
|
||
# 模拟一些耗时操作(如查询数据库)
|
||
# time.sleep(0.1) # 如果需要可以取消注释
|
||
|
||
# 返回响应
|
||
return qmt_service_pb2.AssetResponse(
|
||
total_asset=total,
|
||
cash=cash,
|
||
market_value=market_val
|
||
)
|
||
|
||
def serve():
|
||
"""启动gRPC服务(单线程)"""
|
||
# 使用单线程服务器,通过设置maximum_concurrent_rpcs参数限制并发
|
||
# 或者使用同步服务器,直接处理请求
|
||
server = grpc.server()
|
||
|
||
# 注册服务
|
||
qmt_service_pb2_grpc.add_QmtServiceServicer_to_server(
|
||
QmtServiceServicer(),
|
||
server
|
||
)
|
||
|
||
# 监听端口
|
||
server.add_insecure_port('[::]:58051')
|
||
|
||
# 启动服务器
|
||
server.start()
|
||
print("QMT gRPC 服务已启动(单线程模式),监听端口 58051...")
|
||
print("所有请求将串行处理,不会并发执行")
|
||
|
||
# 保持服务运行
|
||
try:
|
||
server.wait_for_termination()
|
||
except KeyboardInterrupt:
|
||
print("\n服务已停止")
|
||
server.stop(0)
|
||
|
||
if __name__ == '__main__':
|
||
serve() |