| from __future__ import annotations | |
| import argparse | |
| import json | |
| import time | |
| from urllib import request | |
| def ping(base_url: str) -> None: | |
| url = base_url.rstrip("/") + "/v1/healthz" | |
| with request.urlopen(url, timeout=10) as response: | |
| print(json.loads(response.read().decode("utf-8"))) | |
| def main() -> None: | |
| parser = argparse.ArgumentParser(description="Free-host keep-warm pinger for Vera bot.") | |
| parser.add_argument("base_url", help="Public base URL, e.g. https://your-bot.koyeb.app") | |
| parser.add_argument("--interval", type=int, default=900, help="Seconds between pings. Default: 15 minutes.") | |
| args = parser.parse_args() | |
| while True: | |
| try: | |
| ping(args.base_url) | |
| except Exception as exc: | |
| print(f"ping failed: {exc}") | |
| time.sleep(args.interval) | |
| if __name__ == "__main__": | |
| main() | |