Prune old job executions
This commit is contained in:
parent
813f19f355
commit
710ac76192
6 changed files with 552 additions and 11 deletions
|
|
@ -22,6 +22,11 @@ from repub.config import (
|
|||
build_base_settings,
|
||||
load_config,
|
||||
)
|
||||
from repub.job_retention import (
|
||||
DEFAULT_SUCCESSFUL_EXECUTION_RETENTION_DAYS,
|
||||
DEFAULT_UNSUCCESSFUL_EXECUTION_RETENTION_DAYS,
|
||||
cleanup_job_executions,
|
||||
)
|
||||
from repub.web import SHUTDOWN_EVENT_KEY, create_app
|
||||
|
||||
FeedNameFilter = crawl_module.FeedNameFilter
|
||||
|
|
@ -97,6 +102,11 @@ def parse_args(argv: list[str] | None = None) -> tuple[str, argparse.Namespace]:
|
|||
default=None,
|
||||
help="Published feeds directory to clean (default: config out_dir/feeds or out/feeds)",
|
||||
)
|
||||
cleanup_parser.add_argument(
|
||||
"--log-dir",
|
||||
default=None,
|
||||
help="Job execution log directory to clean (default: config out_dir/logs or alongside feeds)",
|
||||
)
|
||||
cleanup_parser.add_argument(
|
||||
"--days",
|
||||
type=int,
|
||||
|
|
@ -121,11 +131,12 @@ def parse_args(argv: list[str] | None = None) -> tuple[str, argparse.Namespace]:
|
|||
return command, args
|
||||
|
||||
|
||||
def _cleanup_config(args: argparse.Namespace) -> tuple[Path, tuple[str, ...]]:
|
||||
def _cleanup_config(args: argparse.Namespace) -> tuple[Path, Path, tuple[str, ...]]:
|
||||
feeds_dir = Path(args.feeds_dir) if args.feeds_dir else Path("out/feeds")
|
||||
log_dir = Path(args.log_dir) if args.log_dir else feeds_dir.parent / "logs"
|
||||
media_dirs = DEFAULT_MEDIA_DIRS
|
||||
if args.config is None:
|
||||
return feeds_dir, media_dirs
|
||||
return feeds_dir, log_dir, media_dirs
|
||||
|
||||
config = load_config(args.config)
|
||||
settings = build_base_settings(config)
|
||||
|
|
@ -137,7 +148,9 @@ def _cleanup_config(args: argparse.Namespace) -> tuple[Path, tuple[str, ...]]:
|
|||
)
|
||||
if args.feeds_dir is None:
|
||||
feeds_dir = config.out_dir / "feeds"
|
||||
return feeds_dir, media_dirs
|
||||
if args.log_dir is None:
|
||||
log_dir = config.out_dir / "logs"
|
||||
return feeds_dir, log_dir, media_dirs
|
||||
|
||||
|
||||
def _install_signal_handlers(stop_event: asyncio.Event) -> None:
|
||||
|
|
@ -187,7 +200,7 @@ def entrypoint(argv: list[str] | None = None) -> int:
|
|||
|
||||
if command == "cleanup-media":
|
||||
try:
|
||||
feeds_dir, media_dirs = _cleanup_config(args)
|
||||
feeds_dir, log_dir, media_dirs = _cleanup_config(args)
|
||||
except FileNotFoundError as error:
|
||||
missing_path = (
|
||||
Path(error.filename).expanduser()
|
||||
|
|
@ -206,7 +219,13 @@ def entrypoint(argv: list[str] | None = None) -> int:
|
|||
dry_run=bool(args.dry_run),
|
||||
media_dirs=media_dirs,
|
||||
)
|
||||
return 1 if result.failures else 0
|
||||
job_result = cleanup_job_executions(
|
||||
log_dir=log_dir,
|
||||
successful_days=DEFAULT_SUCCESSFUL_EXECUTION_RETENTION_DAYS,
|
||||
unsuccessful_days=DEFAULT_UNSUCCESSFUL_EXECUTION_RETENTION_DAYS,
|
||||
dry_run=bool(args.dry_run),
|
||||
)
|
||||
return 1 if result.failures or job_result.failures else 0
|
||||
|
||||
try:
|
||||
port = int(args.port)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue