Я пытаюсь использовать MongoJobStore
example APS. Пример кода:APScheduler Работа не запускается после перезапуска
import logging
import os
import sys
from datetime import datetime, timedelta
from apscheduler.schedulers.blocking import BlockingScheduler
logging.basicConfig()
def alarm(time):
print('Alarm! This alarm was scheduled at %s.' % time)
if __name__ == '__main__':
scheduler = BlockingScheduler()
scheduler.add_jobstore('mongodb', collection='example_jobs', host='192.168.0.108', port=27017)
if len(sys.argv) > 1 and sys.argv[1] == '--clear':
scheduler.remove_all_jobs()
alarm_time = datetime.now() + timedelta(seconds=10)
# scheduler.add_job(alarm, 'date', run_date=alarm_time, args=[datetime.now()], id="la")
print('To clear the alarms, run this example with the --clear argument.')
print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))
scheduler.start()
Во-первых, чтобы проверить, я побежал код и выход метода alarm
был напечатан на консоли. Затем, чтобы проверить использование монго, я сделал следующее:
- Отказался от примера и остановил его перед выполнением задания.
Это создало следующую запись в БД
> db.example_jobs.find().pretty() { "_id" : "la", "next_run_time" : 1456771825.792437, "job_state" : BinData(0,"gAJ9cQEoVQRhcmdzcQJjZGF0ZXRpbWUKZGF0ZXRpbWUKcQNVCgfgAwEAFA8MF4SFUnEEhXEFVQhleGVjdXRvcnEGVQdkZWZhdWx0cQdVDW1heF9pbnN0YW5jZXNxCEsBVQRmdW5jcQlVDl9fbWFpbl9fOmFsYXJtcQpVAmlkcQtVAmxhcQxVDW5leHRfcnVuX3RpbWVxDWgDVQoH4AMBABQZDBd1Y3B5dHoKX3AKcQ4oVQxBc2lhL0tvbGthdGFxD01YTUsAVQNJU1RxEHRScRGGUnESVQRuYW1lcRNVBWFsYXJtcRRVEm1pc2ZpcmVfZ3JhY2VfdGltZXEVSwFVB3RyaWdnZXJxFmNhcHNjaGVkdWxlci50cmlnZ2Vycy5kYXRlCkRhdGVUcmlnZ2VyCnEXKYFxGH1xGX1xGlUIcnVuX2RhdGVxG2gSc4ZiVQhjb2FsZXNjZXEciFUHdmVyc2lvbnEdSwFVBmt3YXJnc3EefXEfdS4=") }
Затем я заметил линию, которая добавляла работу:
# scheduler.add_job(alarm, 'date', run_date=alarm_time, args=[datetime.now()], id="la")
Затем я снова побежал сценарий и получил следующий вывод:
To clear the alarms, run this example with the --clear argument. Press Ctrl+C to exit WARNING:apscheduler.executors.default:Run time of job "alarm (trigger: date[2016-03-01 00:35:27 IST], next run at: 2016-03-01 00:35:27 IST)" was missed by 0:00:19.290825
Выход функции
alarm
не печатается и запись удаляется от дБ.
Я пытался отладки второй прогон, код считывает задания из БД, а затем представить его на threadpool
. Но вывод не выводится.
Почему это может произойти?
Могу ли я спросить, как вы установили регистратор по умолчанию? Я не могу понять и всегда запрашивает сообщение типа «не удается найти logger apscheduler.executors.default». – FaithReaper