码迷,mamicode.com
首页 > 其他好文 > 详细

schedule定时任务出现问题 (大坑已填)!!

时间:2020-05-07 15:13:38      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:mat   min   form   部分   for   task   文章   定时任务   完成   

因为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 的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

本文版权所有,转载请标明出处,谢谢

schedule定时任务出现问题 (大坑已填)!!

标签:mat   min   form   部分   for   task   文章   定时任务   完成   

原文地址:https://www.cnblogs.com/TOM666/p/12842918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!