A:任务管理主要是对登录的账号、执行的在线任务或委托执行的任务进行查看或者终止任务等操作。
详细说明:FAQ:
Q:任务管理说明
特别说明:
1、pyTSL接口提供函数
admin可以发送任务管理命令
执行任务管理的命令不占用并发数,即并发任务满了也能执行
2、admin命令的发送不能过于频繁(至少间隔3秒),否则会提示稍后执行
使用说明:FAQ:
天软pyTSL接口
使用范例:
python代码
import time
import pyTSL
import re
c = pyTSL.Client("user", "password", "tsl.tinysoft.com.cn", 443)# user为天软账号,password 为账号密码
c.login()
# 调用ou命令查看当前登陆情况
ou=c.admin("ou")
print(ou)
# admin命令的发送不能过于频繁(至少间隔3秒),否则会提示稍后执行
time.sleep(3)
# 调用oa命令查看当前并发情况(程序执行)情况
print(c.admin("oa"))
time.sleep(3)
# 调用info命令查看当前账号使用情况
print(c.admin("info"))
#解析得到当前已登陆数、当前已使用的并发数及账号的最大并发数
# 1.对于当前登录情况进行解析,等到当前登录数
def getUsers(ad_s):
regex=re.compile("\d.*online")
user=regex.findall(ad_s)
regex1=re.compile("\d+")
users=0
for i in user:
users+=int(regex1.findall(i)[0])
return users
# 2.解析账号的用户信息
def getConcurrency(ad_s):
ad_t=ad_s.split("\r\n")
keys=ad_t[0].split(" ")
values=ad_t[1].split(" ")
key=[]
value=[]
for i in keys:
if i != '' :
key.append(i)
for i in values:
if i != '':
value.append(i)
s=0
for i in range(len(value)):
k=i-s
if value[k][-1]== '/':
value[k]+=value[k+1]
value.pop(k+1)
s+=1
info={}
for i in range(len(key)):
info[key[i]]=value[i]
return info
print("已登录用户数:", getUsers(ou))
print("在线执行个数/可在线执行个数:",getConcurrency(ou)["OLTASK"])
范例展示:当在线执行数(即并发数)已满时,可通过admin发送命令查看账号使用情况
python代码
import threading
import pyTSL
import time
def test1():
print("子线程运行了。。。")
c = pyTSL.Client("user", "passwprd", "tsl.tinysoft.com.cn", 443) # user为天软账号,password 为账号密码
print("登录状态:", c.login())
ts_wg = c.call("admin_test")
print(ts_wg.error(), ts_wg.value(), ts_wg.message())
c.logout()
def main():
c = pyTSL.Client("user", "password", "tsl.tinysoft.com.cn", 443) # user为天软账号,password 为账号密码
print("登录状态:", c.login())
#执行天软代码打印当前时间
print("当前时间:", c.exec(code="return datetimetostr(now());").value())
#执行任务管理命令-打印当前账号使用情况
print(c.admin("ou"))
#通过调用子线程与天软交互,开销掉天软账号当前所有的并发数
t1 = threading.Thread(target=test1)
t1.start()
#睡眠5秒,不能使用任务管理命令过于频繁(至少间隔3秒),否则会提示稍后执行
time.sleep(5)
#再次执行天软代码:无法执行太多的在线任务
dt = c.exec(code="return datetimetostr(now());")
print("当前时间:", dt.value(), dt.error(), dt.message())
#可执行书满了也能执行任务管理命令,显示可执行数满了,调用子线程登录数加1
print(c.admin("ou"))
print("睡眠70秒")
time.sleep(70)
#子线程执行完再执行天软代码,可正常执行
print("当前时间:", c.exec(code="return datetimetostr(now());").value())
#执行任务管理命令,子线程执行完,可在线执行数发生了变更
print(c.admin("ou"))
if __name__ == '__main__':
main()
调用的天软用户函数:调用后消耗掉本账号当前的全部的可执行数数
Function admin_test();
Begin
rt:=array();
for i:=0 to 4 do
begin
rt[i]:=#a(i);//天软网格调用(即并发)
end
return rt;
end
function a(i);
begin
echo "睡眠一分钟";
sleep(60*1000);
return "执行完成";
end
执行结果: