Получаю следующее предупреждающее сообщение от APScheduler v3.5.3, и я не могу найти причину.
WARNING:apscheduler.scheduler:Error getting due jobs from job store 'default': descriptor 'date' requires a 'datetime.datetime' object but received a 'int'
Программа, в которой у меня возникла эта проблема, была изначально написана для Python 2.7 и в настоящее время переписывается для Python 3.5
После того, как я включил ведение журнала для APScheduler, я вижу, что задание добавляется в хранилище заданий с именем «default».
INFO:apscheduler.scheduler:Scheduler started
DEBUG:apscheduler.scheduler:Looking for jobs to run
DEBUG:apscheduler.scheduler:No jobs; waiting until a job is added
INFO:apscheduler.scheduler:Added job "Notifier.gather" to job store "default"
DEBUG:apscheduler.scheduler:Looking for jobs to run
DEBUG:apscheduler.scheduler:Next wakeup is due at 2018-11-11 18:33:32.954753-05:00 (in 29.996986 seconds)
Примерно через 30 секунд эти сообщения отображаются. Они повторяются каждые 10 секунд вместо ожидаемых 30 секунд.
DEBUG:apscheduler.scheduler:Looking for jobs to run
WARNING:apscheduler.scheduler:Error getting due jobs from job store 'default': descriptor 'date' requires a 'datetime.datetime' object but received a 'int'
DEBUG:apscheduler.scheduler:Next wakeup is due at 2018-11-11 18:33:42.956582-05:00 (in 10.000000 seconds)
Код, который я использую для задания заданий и запуска APScheduler.
import atexit
from apscheduler.schedulers.background import BackgroundScheduler
class Notifier(object):
class NotificationClient(object):
def __init__(self, gather, timestamp):
self.gather = gather
self.timestamp = timestamp
def run(self):
self.timestamp = self.gather(self.timestamp)
def __init__(self):
self._logger = logging.getLogger(__name__)
self.notifiers = []
# Add the jobs here
self.notifiers.append(self.NotificationClient(self.checkEmails, None))
# Start the scheduler
sched = BackgroundScheduler(timezone="America/New_York", daemon=True)
sched.start()
sched.add_job(self.gather, 'interval', seconds=30)
# Shuts down the scheduler when the main program exits
atexit.register(lambda: sched.shutdown(wait=False))
def gather(self):
# client.run() comes from the NotificationClient() class above
[client.run() for client in self.notifiers]
#####
# The function listed in self.notifiers.append()
def checkEmails(self, lastRun):
...code that counts unread emails...
return lastRun
# Start APScheduler
notifier = Notifier()