mirror of
https://github.com/bbilly1/tilefy.git
synced 2024-08-02 16:03:34 +00:00
rebuild jobs after config change
This commit is contained in:
parent
6b8a75b265
commit
88f4d4d84a
@ -15,23 +15,30 @@ class TilefyScheduler:
|
|||||||
CRON_DEFAULT = "0 0 * * *"
|
CRON_DEFAULT = "0 0 * * *"
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.scheduler = False
|
self.scheduler = BackgroundScheduler(timezone=environ.get("TZ", "UTC"))
|
||||||
self.tiles = False
|
self.add_job_store()
|
||||||
|
self.tiles = self.get_tiles()
|
||||||
|
|
||||||
def setup_schedule(self):
|
def get_tiles(self):
|
||||||
"""startup"""
|
"""get all tiles set in config"""
|
||||||
config = TilefyRedis().get_message("config")
|
config = TilefyRedis().get_message("config")
|
||||||
if not config:
|
if not config:
|
||||||
|
print("no tiles defined in tiles.yml")
|
||||||
|
return False
|
||||||
|
|
||||||
|
return config["tiles"]
|
||||||
|
|
||||||
|
def setup_schedule(self):
|
||||||
|
"""startup"""
|
||||||
|
if not self.tiles:
|
||||||
print("no tiles defined in tiles.yml")
|
print("no tiles defined in tiles.yml")
|
||||||
return
|
return
|
||||||
|
|
||||||
self.tiles = config["tiles"]
|
|
||||||
self.scheduler = BackgroundScheduler(timezone=environ.get("TZ", "UTC"))
|
|
||||||
self.add_job_store()
|
|
||||||
jobs = self.build_jobs()
|
jobs = self.build_jobs()
|
||||||
self.add_jobs(jobs)
|
self.add_jobs(jobs)
|
||||||
self.add_watcher()
|
self.add_watcher()
|
||||||
|
|
||||||
|
if not self.scheduler.running:
|
||||||
self.scheduler.start()
|
self.scheduler.start()
|
||||||
|
|
||||||
def add_job_store(self):
|
def add_job_store(self):
|
||||||
@ -44,6 +51,18 @@ class TilefyScheduler:
|
|||||||
port=environ.get("REDIS_PORT"),
|
port=environ.get("REDIS_PORT"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def clear_old(self):
|
||||||
|
"""remove old jobs before recreating"""
|
||||||
|
if not self.scheduler.running:
|
||||||
|
self.scheduler.start()
|
||||||
|
|
||||||
|
all_jobs = self.scheduler.get_jobs()
|
||||||
|
for job in all_jobs:
|
||||||
|
print(job)
|
||||||
|
if job.id == "watcher":
|
||||||
|
continue
|
||||||
|
self.scheduler.remove_job(job.id)
|
||||||
|
|
||||||
def build_jobs(self):
|
def build_jobs(self):
|
||||||
"""build list of expected jobs"""
|
"""build list of expected jobs"""
|
||||||
jobs = []
|
jobs = []
|
||||||
|
10
tilefy/src/scheduler_rebuild.py
Normal file
10
tilefy/src/scheduler_rebuild.py
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
"""rebuild jobs in scheduler"""
|
||||||
|
|
||||||
|
from src import scheduler
|
||||||
|
|
||||||
|
|
||||||
|
def rebuild():
|
||||||
|
"""rebuild"""
|
||||||
|
handler = scheduler.TilefyScheduler()
|
||||||
|
handler.clear_old()
|
||||||
|
handler.setup_schedule()
|
@ -3,6 +3,7 @@
|
|||||||
import hashlib
|
import hashlib
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
from src.scheduler_rebuild import rebuild
|
||||||
from src.template import create_all_tiles
|
from src.template import create_all_tiles
|
||||||
from src.tilefy_redis import TilefyRedis, load_yml
|
from src.tilefy_redis import TilefyRedis, load_yml
|
||||||
|
|
||||||
@ -24,6 +25,7 @@ class Watcher:
|
|||||||
load_yml()
|
load_yml()
|
||||||
create_all_tiles()
|
create_all_tiles()
|
||||||
self._store_last()
|
self._store_last()
|
||||||
|
rebuild()
|
||||||
|
|
||||||
def is_changed(self):
|
def is_changed(self):
|
||||||
"""check if file has changed"""
|
"""check if file has changed"""
|
||||||
|
Loading…
Reference in New Issue
Block a user