为什么运行schedule.run_pending()还要延时1秒,而不是0.1秒?
schedule.every().days.at("14:59").do(a) # 定时运行钉钉业绩推送
# schedule.every().days.at("16:50").do(a)
# 定时运行亚马逊红人
# schedule.every().days.at("16:50").do(a)
# 每周五自动上传文档到微锁系统
# schedule.every().sunday.at("18:00").do(a)
while True:
schedule.run_pending()
time.sleep(1)
回答:
使用time.sleep(1)
这种,就是让当前线程等待一段时间再继续执行。
通常情况下会放在循环里面使用,目的就是适当的加大某些操作的间隔。
这种思想很常见:短链接、长轮询你应该听说过吧
- 短链接的话,就是以一个固定间隔去轮询数据。类似于代码中的
schedule.run_pending()
。 - 长轮询的话,需要有一个阻塞机制。比如
schedule.run_pending()
在某些场景下会阻塞当前线程,这样的话就不需要再设置sleep。
至于为什么是1秒、而不是0.1秒,这个要看业务场景确定。
举个例子,订单创建30分钟未支付,需要将其置为失效状态。解决方案使用定时任务一定间隔查询数据库,查到超过30分钟的即置为失效。
那么选择5分钟执行一次、和每1分钟执行一次,有啥区别呢?
显然时间间隔越短,时间判断的越精细;但对数据库的压力也越大。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
以上是 为什么运行schedule.run_pending()还要延时1秒,而不是0.1秒? 的全部内容, 来源链接: utcz.com/p/938672.html