Spaces:
Sleeping
Sleeping
| """Rebuild the static map twice a day, without serving it. | |
| Use this when you host the generated output/ directory elsewhere (static hosting, | |
| a CDN, GitHub Pages, etc.). To build *and* serve from one process — e.g. for a | |
| container or local preview — run `python app.py` instead. | |
| Usage: | |
| python scheduler.py # build now, then rebuild at 07:00 and 19:00 | |
| python scheduler.py --once # build a single time and exit | |
| """ | |
| from __future__ import annotations | |
| import argparse | |
| import time | |
| import traceback | |
| import schedule | |
| from build_map import generate | |
| REFRESH_TIMES = ["07:00", "19:00"] | |
| def safe_generate() -> None: | |
| try: | |
| generate() | |
| except Exception: | |
| print("Map generation failed:") | |
| traceback.print_exc() | |
| def main() -> None: | |
| parser = argparse.ArgumentParser(description="Twice-daily fuel-price map rebuilder.") | |
| parser.add_argument("--once", action="store_true", help="build once and exit") | |
| args = parser.parse_args() | |
| safe_generate() # always start with a fresh map | |
| if args.once: | |
| return | |
| for when in REFRESH_TIMES: | |
| schedule.every().day.at(when).do(safe_generate) | |
| print(f"Scheduled rebuilds at {', '.join(REFRESH_TIMES)} (local time).") | |
| while True: | |
| schedule.run_pending() | |
| time.sleep(30) | |
| if __name__ == "__main__": | |
| main() | |