#!/usr/bin/env python """RQ worker entrypoint.""" from __future__ import annotations import argparse import asyncio import sys from pathlib import Path ROOT_DIR = Path(__file__).resolve().parent.parent sys.path.insert(0, str(ROOT_DIR)) BACKEND_ROOT = ROOT_DIR / "backend" sys.path.insert(0, str(BACKEND_ROOT)) from app.services.webhooks.dispatch import flush_webhook_delivery_queue def cmd_worker(args: argparse.Namespace) -> int: async def _run_forever() -> None: while True: await flush_webhook_delivery_queue( block=True, block_timeout=0, ) try: asyncio.run(_run_forever()) except KeyboardInterrupt: return 0 return 0 def build_parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser(description="RQ background worker helpers.") subparsers = parser.add_subparsers(dest="command", required=True) worker_parser = subparsers.add_parser( "worker", help="Continuously process queued webhook delivery work.", ) worker_parser.set_defaults(func=cmd_worker) return parser def main() -> None: parser = build_parser() args = parser.parse_args() sys.exit(args.func(args)) if __name__ == "__main__": main()