概要
前回指定の日時にcronが実行されるかどうかチェックするスクリプトを作成しました
今回は更にそれを応用して指定の cron が一日に何回実行されるのかカウントしてみました
環境
- macOS 11.7.10
- Python 3.11.7
- croniter 2.0.5
インストール
- pipenv install croniter
サンプルスクリプト
from datetime import datetime, timedelta
from croniter import croniter
def count_run_today(cron_expression, target_date: str):
# 指定の日付の開始、指定の日付の明日の開始時刻を取得
target_datetime = datetime.strptime(target_date, "%Y/%m/%d")
today_start = datetime(
target_datetime.year, target_datetime.month, target_datetime.day
) - timedelta(seconds=1)
tomorrow_start = today_start + timedelta(days=1) + timedelta(seconds=1)
# cron オブジェクトの作成
cron = croniter(cron_expression, today_start)
# 当日内に実行される日時の分だけカウントする
run_count = 0
while True:
# 次に実行される日時を取得
next_run = cron.get_next(datetime)
if today_start < next_run < tomorrow_start:
run_count += 1
else:
break
return run_count
# テスト正常系
print("正常系テスト")
print(count_run_today("0 12 * * *", "2024/06/24")) # => 1
print(count_run_today("0 12 24 6 *", "2024/06/24")) # => 1
print(count_run_today("*/1 * * * *", "2024/06/24")) # => 1440
print(count_run_today("*/5 * * * *", "2024/06/24")) # => 288
print(count_run_today("*/30 * * * *", "2024/06/24")) # => 48
print(count_run_today("*/30 1 * * *", "2024/06/24")) # => 2
最後に
当日分の cron が正しく全件実行されるか確認したいときに使えるスクリプトです
0 件のコメント:
コメントを投稿