2015-01-10 6 views
0

Я совершенно не знаком с Python и Bottle (и apscheduler), поэтому хотел бы получить несколько простых инструкций по реализации запланированной работы.Как добавить планировщик в бутылку

Я написал код Python, который может проверять состояние и данные, отображаемые на одном из наших сайтов. Я также написал код, который отправляет нам статус.

Теперь я хотел бы добавить функциональность для регулярного вызова этого кода (например, каждые 15 минут), и для этого apscheduler кажется подходящим, легким, автономным решением.

То, что я хотел бы знать:

  • Могу ли я начать BackgroundScheduler при запуске веб-сайта бутылки? (Где находится код «запуска»?)
  • И могу ли я сделать свой экземпляр BackgroundScheduler глобальным? Причина заключается в том, что я хочу, чтобы получить доступ к нему из других мест на сайте и добавить/удалить/рабочие паузы

Я видел, что кто-то имело подобную идею здесь is it possible to run a task scheduler in bottle web framework но деталь и ответ слишком мало информации для нуба как я.

Я понимаю, что я мог бы, вероятно, прервать что-то подобное с помощью sleep(), но сначала я хочу сначала изучить опцию apscheduler.

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

Я должен добавить, что я использую проект «Бутылка», доступный в Visual Studio 2013, который поставляется с определенной конфигурацией и уже включенными файлами.

ответ

0

Вы можете использовать threading.Timer:

from threading import Timer 

def my_task(): 
    # do stuff ... 
    Timer(15*60, my_task).start()  # schedule for every 15 minutes 

# start your scheduler 
my_task() 
0

@Alexander: Я сделал это слишком. Он работает с Botte WSGIRefServer(), здесь вы можете иметь потоки, живущие так долго, как вам нравится. На Apache с mod_wsgi ваши потоки должны работать только так долго - тогда их убивают. Поэтому планировщик внутри Бутылка для меня не работала.

Personaly Я пишу немного расписание сервера в zmq (pyzmq), который получает запланированную задачу и использует schedule-package для их запуска. Хорошо работает для меня.