云烟成雨 发表于 2022-1-20 17:18

python的定时程序为什么有时自己就停止了

我用timer = threading.Timer(时间, 函数).start 写了定时器,
函数里面是一些网络请求和一些简单的操作,实现的功能就是定时自动请求接口,


可是挂了两天发现,经常不定期会出现卡住不运行的状况,
比如我定时了5秒请求一次,但有时就卡住不动了,这是为什么?


是因为这个函数本身有bug?还是说request请求在python里面是同步的,请求有问题阻塞了代码的执行?应该不会啊,就算请求超时我也看到过失败的提示,我是在dos窗口下用python命令运行的python xxx.py


求解决方法!感谢!

cmy2019 发表于 2022-1-20 17:39

本帖最后由 cmy2019 于 2022-1-20 17:42 编辑

网络相关的操作容错性低,你五秒请求一次肯定不会那么稳定,我猜测关键问题还是在网络请求的代码上,如果是这样的话,还是需要对网络相关的代码多做一些判断和处理,增强程序的稳定性。你可以做个排除法实验,把五秒一次请求换成五分钟一次请求,看看什么情况。
此外,个人更推荐用aspschedule(应该是这么拼,一搜就能搜到)这个三方库来实现定时程序,我用这个库写过每十分钟请求网络数据的程序,连续半月都没问题。

kk159 发表于 2022-1-20 18:35

win自带计划任务执行py~

whofly 发表于 2022-1-20 20:06

定时器的系统时间性比较好

云烟成雨 发表于 2022-1-21 09:23

ChengYaoJin188 发表于 2022-1-20 18:25
request 参数需要自己带上timeout,默认虽然有,但是自己加了好像有那么点区别,具体的记不清了。
然后dos ...

把快速编辑模式和插入模式的”√“去掉
这个有什么影响呢?

云烟成雨 发表于 2022-1-21 09:23

cmy2019 发表于 2022-1-20 17:39
网络相关的操作容错性低,你五秒请求一次肯定不会那么稳定,我猜测关键问题还是在网络请求的代码上,如果是 ...

我就是5分钟的,我加了try错误捕获,感觉时间间隔不稳定

白水饮 发表于 2022-1-21 09:25

我也用的aspscheduler写的定时签到,连续运行很久都没问题

云烟成雨 发表于 2022-1-21 09:34

cry980285208 发表于 2022-1-21 09:25
我也用的aspscheduler写的定时签到,连续运行很久都没问题

有没有代码示例给一份?

白水饮 发表于 2022-1-21 09:43

云烟成雨 发表于 2022-1-21 09:34
有没有代码示例给一份?

from apscheduler.schedulers.blocking import BlockingScheduler


def main(a, b):
    print(a, b)


if __name__ == '__main__':
    scheduler = BlockingScheduler()
    scheduler.add_job(main, 'interval', seconds=20, args=["a", "b"])# 每隔60秒(可以是时分秒)执行main函数,args是传参
    scheduler.add_job(main, 'cron', hour=8, minute=57, second=50, args=["a", "b"])# 定时执行,和crontab差不多
    scheduler.start()

Mr.[先知] 发表于 2022-1-21 10:26

定时任务是一方面 你的一些网络操作的请求这样的 最好采用异步函数去做 这样 就不会卡主 卡死主进程
页: [1] 2
查看完整版本: python的定时程序为什么有时自己就停止了