2015-03-05 11 views
0

Я добавляю задание в планировщик, используя apscheduler, используя скрипт. К сожалению, задание неправильно назначено при использовании сценария, так как я не запускал планировщик.Как заставить apscheduler добавлять задания в магазин заданий?

scheduler = self.getscheduler() # initializes and returns scheduler 
scheduler.add_job(trigger=trigger, func = function, jobstore = 'mongo') #sample code. Note that I did not call scheduler.start() 

Я вижу сообщение: apscheduler.scheduler - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts

Сценарий предполагается добавлять задания в планировщик (не запускать планировщик в этом конкретном случае) и есть некоторые другая информация, которые должны быть добавлен в событие задания, добавленного в базу данных. Можно ли добавить задание и заставить планировщика добавить его в хранилище объявлений без фактического запуска планировщика?

Я знаю, что после добавления каждого задания можно запустить и выключить планировщик, чтобы планировщик сохранил информацию о задании в хранилище. Это действительно хороший подход?

Редактировать: Мое первоначальное намерение состояло в том, чтобы изолировать процесс инициализации моего программного обеспечения. Я просто хотел добавить некоторые задания в планировщик, который еще не запущен. Реальная проблема заключается в том, что я дал разрешение пользователю запустить и остановить планировщик. Я не могу заверить, что в системе есть запущенный экземпляр планировщика. Я временно исправил проблему, запустив планировщик и отключив его после добавления заданий. Оно работает.

ответ

0

Вам нужно будет сообщить способ планировщика, чтобы задание было добавлено, чтобы оно могло проснуться и настроить задержку на следующее пробуждение. Лучше сделать это через какой-то механизм RPC. Какой механизм подходит для вашего конкретного случая использования, я не знаю. Но RPyC и Execnet - хорошие кандидаты. Используйте один из них или что-то еще, чтобы удаленно управлять процессом планировщика, чтобы добавить указанные задания, и все будет в порядке.

+0

Я не знаю, как использовать RPC с этим. Я попробую и расскажу позже. Меня беспокоит, что планировщик уже знает, что должно быть добавлено задание. Он ожидает запуска планировщика, который я не собираюсь делать в этот конкретный момент. Надеюсь, мы оба на одной странице. Я использую python и apscheduler. Спасибо, в любом случае. –

+0

Я неправильно понял ваши требования? Вы не добавляете задания в процесс, который в конечном итоге не запустит планировщик? Я думал, что это так. –

+0

Я не использовал RPC в своей жизни, и я немного смутился, когда прочитал ваш ответ. Я пытался реализовать инициализацию своего программного обеспечения. Я просто хотел добавить некоторые задания в планировщик, не запустив планировщик вообще. Я временно исправил проблему, запустив планировщик и остановив его позже. Это действительно правильный подход? Реальная проблема заключается в том, что я дал контроль над тем, чтобы пользователь запускал и останавливал планировщик, по текущему дизайну, возможно, я не смогу гарантировать, что экземпляр Scheduler будет запущен при добавлении заданий. –