吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 675|回复: 3
收起左侧

[求助] 关于schedulers定时器的疑惑

[复制链接]
云烟成雨 发表于 2023-3-31 11:21
本帖最后由 云烟成雨 于 2023-3-31 11:26 编辑

代码如下:

[Python] 纯文本查看 复制代码
import time
from apscheduler.schedulers.blocking import BlockingScheduler
scheduler = BlockingScheduler(timezone='Asia/Shanghai')

def main():
    print('main:' + datetime.datetime.now().strftime('%H:%M:%S'))
    time.sleep(5)
    print('wait 5s do something')
scheduler.add_job(main, 'interval', days=0, hours=0, minutes=0, seconds=10);
scheduler.start();




定时执行时间为10秒,定时执行的函数main内部有一个time.sleep延迟,但是这个延迟并没有导致定时器interval的延迟,这个怎么解决?
我希望是main函数下次执行的时间是15秒以后(10秒+main函数内部5秒的延迟),而不是依然是10秒后。(interval的时间间隔不能改写为15秒,因为我不知道程序执行的具体时间是多少,会造成不精确)


因为遇到个问题是我写的程序main内部是需要有time.sleep延迟的,sleep后还需要进行一些代码执行,怎么让interval下次执行的时间间隔在main函数执行结束后的时间开始算起,而不是main函数执行开始时就开始计时了


我目前的解决是改回了使用time.sleep递归的方式定时执行,但是我觉得schedulers应该也可以实现才对,请大佬指教

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
saszznz 发表于 2023-3-31 12:24
提示: 作者被禁止或删除 内容自动屏蔽
~零度 发表于 2023-3-31 15:07
[Python] 纯文本查看 复制代码
import time
from apscheduler.schedulers.blocking import BlockingScheduler
import datetime

scheduler = BlockingScheduler(timezone='Asia/Shanghai')
last_executed_time = None


def main():
    global last_executed_time
    if last_executed_time is not None:
        time.sleep(max(0., 10 - time.time() + last_executed_time)) #距离上次完成执行的时间如果不到10秒则等待一段时间
    print('main:' + datetime.datetime.now().strftime('%H:%M:%S'))
    time.sleep(5)
    print('wait 5s do something')
    last_executed_time = time.time()


scheduler.add_job(main, 'interval', days=0, hours=0, minutes=0, seconds=10, max_instances=1) #最多运行一个实例
scheduler.start()
 楼主| 云烟成雨 发表于 2023-3-31 17:10
~零度 发表于 2023-3-31 15:07
[mw_shl_code=python,true]import time
from apscheduler.schedulers.blocking import BlockingScheduler
...

main函数前面加延迟时间啊,变相解决,哈哈哈
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表