ジョブスケジューラ
Tinyauthのデータクリーンアップスケジューラとクリーンアップポリシーの設定
tinyauthは、期限切れのトークン、使用された認証コード、電子メール認証トークンなどの一時データを定期的に整理する組み込みスケジューラを提供します。この設定は schedulerと cleanup 最上位セクションで構成されています。
スケジューラ設定
# config.yaml
scheduler:
enabled: true
mode: croner
cleanup_cron: '0 2 * * *'
# mode: database 를 사용할 때만 적용돼요.
poll_interval_ms: 5000
lock_ttl_ms: 60000
background_retry_delay_ms: 1000
background_max_attempts: 3
background_retention_ms: 604800000
instance_id: ''
scheduler.enabled:組み込みスケジューラを有効にするかどうか。デフォルトはtrueはい。scheduler.mode:スケジューラバックエンドです。cronerは単一プロセス用のインメモリスケジューラであり、databaseは、DBリースを使用して複数のインスタンスのうちの1つだけがジョブを取得できるようにする分散スケジューラです。デフォルトはcronerはい。scheduler.cleanup_cron:組み込みクリーンアップジョブを実行します。標準5フィールドcron形式(분 시 일 월 요일)を使用してください。デフォルトは0 2 * * *(毎日午前2時)です。scheduler.poll_interval_ms:databaseモードでデュージョブを確認するサイクルです。デフォルトは5000これです。scheduler.lock_ttl_ms:databaseモードで job lease が有効な時間です。作業に時間がかかると、実行中にリースが自動更新されます。デフォルトは60000これです。scheduler.background_retry_delay_ms:databaseモードで失敗したバックグラウンドジョブを再実行する前の待ち時間です。デフォルトは1000これです。scheduler.background_max_attempts:databaseモードでバックグラウンドジョブを最後の失敗としてマークする前の最大試行回数。デフォルトは3これです。scheduler.background_retention_ms:databaseモードで完了したbackground job(succeeded/failed)を保存する期間(ms)です。デフォルトは604800000(7日)です。pending/runningjobはこのクリーンアップポリシーで削除しません。scheduler.instance_id:databaseモードでリースの所有者を識別する値です。空白にすると、プロセスごとに固有の値が自動的に生成されます。直接指定する場合、replica/processごとに必ず一意でなければなりません。
Note
Kubernetes 環境では、単一の実行保証が必要な場合 scheduler.mode: databaseを使用するか、組み込みスケジューラの代わりにCronJobを使用することをお勧めします。 CronJobを使用する場合 scheduler.enabled: falseに設定し、外部から tinyauth cleanup CLI コマンドを実行してください。詳しくは Kubernetes 導入ガイドを参考にしてください。
Caution
database モードでは、すべてのタスクはat-least-once方式で実行されます。 leaseが期限切れになると、他のインスタンスが同じジョブを再取得できるようになります。
クリーンアップポリシー(cleanup)
各データタイプごとにクリーンアップポリシーを細かく設定できます。
期間形式
整理方針の保存期間(retention)は次の形式を使用します。
| フォーマット | 意味 | 例 |
|---|---|---|
"0" | 即時(保存期間なし) | 有効期限を即座に削除 |
"30s" | 秒 | 30秒 |
"30m" | 分 | 30分 |
"24h" | 時間 | 24時間 |
"7d" | 仕事 | 7日 |
"1y" | 年(365日) | 1年 |
キャンセルされたトークン(revoked_tokens)
cleanup:
revoked_tokens:
enabled: true
retention: '0'
enabled:キャンセルされたトークンクリーンアップを有効にするかどうか。デフォルトはtrueはい。retention:トークン満了後の保存期間です。デフォルトは"0"(有効期限はすぐに削除)です。
OAuth 認証コード(oauth_codes)
cleanup:
oauth_codes:
enabled: true
consumed_retention: '24h'
enabled:認証コードクリーンアップを有効にするかどうか。デフォルトはtrueはい。consumed_retention:使用された認証コードの保存期間です。デフォルトは"24h"はい。
メール認証(email_verifications)
cleanup:
email_verifications:
enabled: true
retention: '0'
enabled:期限切れの電子メール認証トークンクリーンアップを有効にするかどうか。デフォルトはtrueはい。retention:有効期限後の保存期間です。デフォルトは"0"これです。
パスワードリセット(password_resets)
cleanup:
password_resets:
enabled: true
retention: '0'
enabled:有効期限が切れたパスワードリセットトークンクリーンアップを有効にするかどうか。デフォルトはtrueはい。retention:有効期限後の保存期間です。デフォルトは"0"これです。
待機中 OAuth 参加(pending_oauth_registrations)
cleanup:
pending_oauth_registrations:
enabled: true
retention: '0'
enabled:中断 OAuth 購読フロークリーンアップを有効にするかどうか。デフォルトはtrueはい。retention:有効期限後の保存期間です。デフォルトは"0"これです。
関連設定
account_deletion.enabled:ユーザーが自分でアカウントの削除を要求できるかどうかを決定します。account_deletion.retention:削除要求から実際の永久削除までの猶予期間です。tinyauth cleanupこの実行時にこのポリシーが適用されます。tokens.key_rotation.*: JWT キー循環ポリシーです。整理作業のようなメンテナンスの時点で一緒に反映されます。
完全な例
# config.yaml
tokens:
key_rotation:
enabled: true
interval_days: 30
overlap_days: 7
account_deletion:
enabled: true
retention: 30d
scheduler:
enabled: true
mode: croner
cleanup_cron: '0 2 * * *'
cleanup:
revoked_tokens:
enabled: true
retention: '0'
oauth_codes:
enabled: true
consumed_retention: '24h'
email_verifications:
enabled: true
retention: '0'
password_resets:
enabled: true
retention: '0'
pending_oauth_registrations:
enabled: true
retention: '0'
CLI 命令
スケジューラとは別に、 CLIを介して手動でクリーンアップタスクを実行することもできます。
# 정리 작업 실행
tinyauth cleanup
# 실제 삭제 없이 대상만 확인 (드라이 런)
tinyauth cleanup --dry-run
# 상세 진행 상황 출력
tinyauth cleanup --verbose
# 커스텀 설정 파일 사용
tinyauth cleanup -c /path/to/config.yaml