schedule定时任务出现问题 (大坑已填)!!
因为python每次运行完,并不清除内存,nowtime一直不变,这导致了一个致命问题,使我的脚本一直运行失败,具体如下:
我设置的是每隔30分钟登陆一次,代码如下
if __name__ == "__main__": login() schedule.every(30).minutes.do(login) while True: schedule.run_pending() time.sleep(1)
但是它每次运行返回的数据都是一样的
我9点多第一次打开运行,半个小时后运行结果如下:
[+]登录成功 现在是北京时间:(2020-05-07 09:53:26.624833) LM003,“任务未开始”,任务时间:13 LM006,“任务未开始”,任务时间:14 LM007,“任务未开始”,任务时间:12 LM005,“任务未开始”,任务时间:09 [+]登录成功 现在是北京时间:(2020-05-07 09:53:26.624833) LM003,“任务未开始”,任务时间:13 LM006,“任务未开始”,任务时间:14 LM007,“任务未开始”,任务时间:12 LM005,“任务未开始”,任务时间:09
原因是我在关键函数中加入了对比
def indexlist(): print("现在是北京时间:(%s)"%(now)) for index in range(len(list2)): if((buylist2[index]['state'])=="0"): if(int(buylist2[index]['task_hour']) <= int(now.hour)): while True: send(QQ) if(json_data3['data']!='null'): break send_pic(****) else: print ("{ID},“任务未开始”,任务时间:{tasktime}".format(ID = ***,tasktime = ***)) else: print ("{ID},任务已完成".format(***))
而我的now = datetime.datetime.now()是定义在login外的,所以每次运行一直不变,导致程序出现输出错误
解决办法:将now = datetime.datetime.now()写入每半个小时login函数,并且每次运行完最后加上now=None清除内存
def login(): global now now = datetime.datetime.now() 巴拉巴拉一大堆之后 now=None
About Me
QQ 群:1094019526 tg 群:QQ 群里有
联系我请加 QQ 好友 (1362449059),注明添加缘由
文章内容来源于 TOM 的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
本文版权所有,转载请标明出处,谢谢
觉得有用请点个支持,谢谢!
弘扬开源精神,用爱发电!!
Code changes the world!!!