From 9b2808d83653185750916d2bb9f07113e7018c83 Mon Sep 17 00:00:00 2001 From: Peter Dahlberg Date: Mon, 13 Jun 2016 10:27:18 +0200 Subject: [PATCH] add scheduler things --- deploy_config.py | 9 +++++++++ develop_main.py | 22 ++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/deploy_config.py b/deploy_config.py index cfa195a..fa6e099 100644 --- a/deploy_config.py +++ b/deploy_config.py @@ -1,5 +1,6 @@ import os import logging +from apscheduler.triggers.cron import CronTrigger if __name__ == "__main__": raise SystemExit("Not meant to be run directly!") @@ -49,4 +50,12 @@ RUNNERS = { } } +# define crojobs as sequence of (runner, trigger) pairs, for cron triggers see +# http://apscheduler.readthedocs.io/en/latest/modules/triggers/cron.html +SCHEDULED_BUILD_JOBS = [ + ("website_master", CronTrigger(minute="*/5")) + +] + + diff --git a/develop_main.py b/develop_main.py index 8ce7199..3548c5c 100755 --- a/develop_main.py +++ b/develop_main.py @@ -1,18 +1,32 @@ #! /usr/bin/env python3 -import deploy_config from pelican_deploy import DeploymentRunner +from apscheduler.schedulers.background import BackgroundScheduler +from importlib.machinery import SourceFileLoader import pelican_deploy.webhookbottle import logging -runners = {name: DeploymentRunner(name, conf) - for name, conf in deploy_config.RUNNERS.items()} if __name__ == "__main__": #for r in runners.values(): # r.build_blocking() + + config = SourceFileLoader("config", "deploy_config.py").load_module() + + runners = {name: DeploymentRunner(name, conf) + for name, conf in config.RUNNERS.items()} + + # start a scheduler + scheduler = BackgroundScheduler() + scheduler.start() + + for i, (rname, trigger) in enumerate(config.SCHEDULED_BUILD_JOBS): + scheduler.add_job(runners[rname].build, trigger=trigger, + name="{} ({})".format(i, rname)) + + pelican_deploy.webhookbottle.set_runners(**runners) - pelican_deploy.webhookbottle.set_github_secret(deploy_config.GITHUB_SECRET) + pelican_deploy.webhookbottle.set_github_secret(config.GITHUB_SECRET) pelican_deploy.webhookbottle.devrun()