在测试打点系统算法的时候,需要按天注入数据,高通量的数据第一可以验证算法,第二也可以测试服务的性能,大多是异步的方式处理接口的数据,所以并不要求很高的并发,前期的测试代码开发选择了python,简单、轻量化,足以满足需求,
def runtime(sched_Timer,day):#day是我代码运行的周期,这个项目算法的验证最少需要90天,这里我初始化大于90
global now,failed,lday,totalduration
flag = 0#开始设flag=0
while (gol.get_d()) <= day:
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
#now放在循环内刷新时间
#print now
if now == str(sched_Timer):#刷新到当前事件是定时的时间,run
print (lday)
p.data(random.randrange(10000,20000,100))#修改新增区间,这里是我业务需要灌入的数据量
# p.data(10)#修改新增区间
rd.readdev()
t1 = threading.Thread(target=c.clientapi)
t1.start()
t1.join()#协程
print (now)
print ("****************************it is %sth day,total run %s times ******************************" %(gol.get_d(),(c.t)))
with open (("log%s.txt" %(gol.get_d())) ,"a+") as f:
f.write(str(now) + "\n")
f.write("totalduration time is %s" %c.totalduration + "\n")
f.write("it is %sth day ,total run %s times" %(gol.get_d(),(c.t)) + "\n")
f.write("error %s times" %(gol.get_failed()) + "\n")
flag = 1#执行完任务flag设为1,代码进入else分支
gol.set_d()#d++
else:
if flag==1:#if分支里面已将flag设为1,这里直接进入下面将定时设置为一天后
sched_Timer=sched_Timer + datetime.timedelta(days=1)#括号内设置定时间隔,参数可以是天/小时/分钟
flag = 0#设置新的定时后,flag置为0,下次循环不会修改定时时间
这段代码主要依靠flag的设置,使代码进入不同的分支,以此控制流程,简单总结如下: