为什么这不起作用?这是一个错误的错误吗?

时间:2016-10-14 15:21:31

标签: python

当我运行它等待一分钟然后它打印'点亮'然后等待两分钟,然后打印出“关灯”#39;之后,apscheduler似乎疯了,很快就在两者之间迅速交替。

我是不是偶然发现了一个错误的错误或者为什么会这样?

OS X (10.11.4)

2 个答案:

答案 0 :(得分:2)

您正在使用事件充斥调度程序。您正在使用BackgroundScheduler,这意味着scheduler.start()正在退出,而不是等待事件发生。最简单的修复可能是不使用BackgroundScheduler(使用BlockingScheduler),或在你的循环上放置一个sleep(180)。

答案 1 :(得分:1)

试试这个:

from datetime import datetime, timedelta
from apscheduler.schedulers.background import BackgroundScheduler
import time

scheduler = BackgroundScheduler()


def turn_on():
    print('Turn on', datetime.now())


def turn_off():
    print('Turn off', datetime.now())


scheduler.start()


while True:
    scheduler.add_job(func=turn_on, trigger='date', next_run_time=datetime.now() + timedelta(minutes=1))
    scheduler.add_job(func=turn_off, trigger='date', next_run_time=datetime.now() + timedelta(minutes=2))
    time.sleep(180)

您应该只启动一次调度程序。