A:在使用tsl脚本连接天软服务器时,当登陆连接不上服务器,且报服务器没有答复或没有反应的错误时,可轮动所有天软服务器地址进行连接,保证正常登陆后再继续执行。
天软服务器地址:FAQ:
Q:天软服务器地址
tsl脚本实现多条线路轮动登录天软服务器
接口使用说明:FAQ:
服务器交互函数
配置
1、下载已经封装好的tsConnectServer.tsf文件,附件:
附件:tsConnectServer.tsf
2、将文件放在天软客户端安装目录的funcext文件夹下,例如:C:\Program Files\Tinysoft\AnalyseNG.NET\funcext
3、其他tsl脚本使用tsConnectServer模型登录天软服务器;
4、配置本地交互模型:FAQ:
Q:如何构建定时任务
tsConnectServer模型说明
说明:登录天软服务器,当未指定服务器或指定服务器不可用时,轮询其他服务器登录。
参数:
userID:string,用户名
password:string,用户密码
host:string,天软服务器地址,可省略
port:int,服务器端口,可省略
ifLD:bool,当服务器已登录时是否强制切换服务器,可省略
代码详情:
function tsconnectserver(userID,password,host,port,ifLD);
begin
c:=checklogined();//登录状态
if c then
begin
echo "天软服务器已登录","\r\n";
if not ifLD then return 1;
else
begin
disconnectserver();
echo "断开登录,按指定地址连接登录天软服务器","\r\n";
end
end
if not host then
begin
//选择有效的天软服务器
servers := getsysparam("TSDN_tsServerList");
if ifnil(servers) then servers := tsServerList();
echo "可选择服务器数量:",length(servers),"\r\n";
if not length(servers) then
begin
echo "所有服务器皆异常,请及时向TSDN人员反馈","\r\n";
return 0;
end
//轮动天软服务器地址
for i,server in servers do
begin
setsysparam("TSDN_tsServerList",select * from servers where ["IP"]<>server["IP"] end);
connect :=ConnectServer(server["IP"],server["Port"]);
if connect = 0 then
begin
echo "天软服务器连接成功,当前服务器:",server["SerName"],"\r\n";
break;
end
end
if connect <> 0 then
begin
echo "天软服务器连接失败,当前服务器:", server["SerName"],"\r\n";
return 0;
end
end
else
begin
lj :=ConnectServer(host,port);// 连接服务器
if lj=0 then
echo "天软服务器连接成功,当前为指定服务器IP:", host,"\r\n";
else
begin
echo "天软服务器连接失败,当前为指定服务器IP:", host,"\r\n";
tsconnectserver(userID,password,0,0,ifLD);
end
end
dl := LoginServer(userID, password,err); // 登陆账号
if dl = 0 then
echo "天软服务器登陆成功","\r\n";
else
begin
echo "天软服务器登陆失败:", tostn(err),"\r\n";
return 0;
end
return 1;
end
function tsServerList();
begin
serList:=array(
("SerName": "深圳新节点", "IP": "sznew.tinysoft.com.cn", "Port": 4433),
("SerName": "武汉服务器", "IP": "wh.tinysoft.com.cn", "Port": 443),
("SerName": "深圳服务器", "IP": "tsl.tinysoft.com.cn", "Port": 443),
("SerName": "深圳服务器-网通", "IP": "211.162.125.187", "Port": 443),
("SerName": "深圳服务器-电信", "IP": "220.112.1.175", "Port": 443),
("SerName": "深圳服务器-移动", "IP": "183.239.132.134", "Port": 443),
("SerName": "深圳新节点-联通", "IP": "112.95.140.61", "Port": 4433),
("SerName": "深圳新节点-电信", "IP": "119.147.24.199", "Port": 4433),
("SerName": "深圳新节点-移动", "IP": "120.232.255.75", "Port": 4433));
return serList;
end
范例:使用tsl脚本获取A股日线行情,当取数不满足预期时轮动到其他服务器取数
说明:
1.在天软服务器中保存取数模型TSDN_getAStocksHQData获取指定日A股日线行情;
2.在tsl脚本中使用tsconnectserver登录服务器后调用取数模型;
3.判断取数是否符合预取,比如一天的数据量与代码量差异不超过200,不符合预期时轮询到其他服务器再次取数。
TSDN_getAStocksHQData代码:
Function TSDN_getAStocksHQData(endt);
Begin
//获取指定日A股日线行情
stocks:=GetAbkbyDate("A股",endt);
setsysparam(pn_cycle(),cy_day());
return select * from markettable datekey endt to endt of stocks end;
End;
connecttest.tsl脚本:
userid := "user"; // 天软平台账户
password := "password"; //天软账号密码
host := "tsl.tinysoft.com.cn"; // 地址
port := 443; // 端口
funcname:="TSDN_getAStocksHQData";
parr:=array(20260114t);
return TSDN_connectserverTest(funcname,parr,userid,password,host,port);
function TSDN_connectserverTest(funcname,parr,userid,password,host,port);
begin
dl:=tsconnectserver(userid,password,host,port,1);//使用配置好的地址登陆
if not dl then return ;
echo "执行服务器取数模型 \r\n";
ret:=TS_ExecServerFun("",funcname,parr,result,retmsg);
if ret then
begin
len:=length(result);
//当天在市A股共5454个,如果返回数据量与5400差距超过200判定取数异常
if abs(len-5400)<200 then
begin
echo "模型执行成功,取数正常,获取数据量:",len,"\r\n";
return result;
end
else
begin
echo "取数异常,异常数据量:",len,",切换服务器取数","\r\n";
return TSDN_connectserverTest(funcname,parr,userid,password);
end
end
else
begin
echo "执行取数模型失败:",retmsg;
return 0;
end
end
调用执行结果:
