Этот код должен создать поток, который выполняет sched.scheduler.run()
, а затем запланировать событие на 5 секунд в будущем. Однако на Python 3.7.4 в macOS Catalina обратный вызов запланированного события не выполняется.
Ожидается ли, что вы можете запланировать события на работающем sched.scheduler
? Я бы предположил, что вы можете, поскольку вам разрешено отменять события в очереди, и исключение не выдается.
import datetime
import sched
import threading
import time
class Schedule:
def __init__(self):
self.scheduler = sched.scheduler(time.time, time.sleep)
self.thread = threading.Thread(target=self.scheduler.run)
self.thread.start()
def at(self, when, callback, *args, **kwargs):
e = self.scheduler.enterabs(when.timestamp(), 0, callback, args, kwargs)
return e
target = (datetime.datetime.now() + datetime.timedelta(seconds=5))
s = Schedule()
s.at(target, print, 'Ding!')
while True:
print(time.time() - target.timestamp(), s.scheduler.queue)
time.sleep(1)