2015-10-19 3 views
4

Использование APScheduler версии 3.0.3. Услуги в моем приложении внутренне используют APScheduler для планирования заданий &. Также я создал класс оболочки вокруг фактического APScheduler (только фасад, помогает в модульных тестах). Для модульного тестирования этих сервисов я могу издеваться над этим классом-оболочкой. Но у меня есть ситуация, когда мне бы очень хотелось, чтобы APScheduler выполнял задание (во время теста). Есть ли способ, с помощью которого можно заставить запустить работу?Можем ли мы заставлять работать в хранилище вакансий APScheduler?

ответ

4

Там нет запуска по умолчанию немедленно начать работу, чтобы достичь этой вы можете получить текущее время и установить DateTrigger на работу, как это:

my_job.modify_job(trigger=DateTrigger(run_date=datetime.datetime.now())) 

таким образом вы «сила» работа для запуска, но вы должны убедиться, чтобы вставить работу снова в планировщике, другой вариант просто создает новую работу, чтобы выполнить ту же функцию с функцией add_job

sched.add_job(func=your_function(), 
       trigger=DateTrigger(run_date=datetime.datetime.now())) 

таким образом, вы не имеете сделать любой дополнительный шаг.

0

Другой подход: вы можете написать логику своей работы в отдельной функции. Таким образом, вы сможете вызвать эту функцию в своей запланированной задаче, а также в другом месте. Я предполагаю, что это более явный способ делать то, что вы хотите.

Смежные вопросы