Postgresだけを基盤として、再起動やクラッシュ後も継続する耐久性の高いバックグラウンドワークフローとアクションを構築するPythonライブラリ。
agronholm/apscheduler
cron、インターバル、カレンダー、単発トリガーに対応し、永続化可能なジョブストアも利用できるPython製スケジューラー/ジョブキューライブラリ。
- スター
- 7,688
- フォーク
- 823
- 未解決の Issue
- 82
- 最終コミット
- 12 日前
これは何?
APScheduler(Advanced Python Scheduler)は、Python関数をスケジュールに従って実行したり、ジョブとしてキューに登録して実行したりするためのライブラリです。小規模なスクリプトでは単一プロセスで動作し、複数のスケジューラーやワーカーが共通のデータストアを共有するマルチノード構成にも対応します。
同期版と非同期版が用意されており、スレッドベースのアプリケーションだけでなく、asyncioやTrioを使うアプリケーションにも適しています。スケジュールやジョブはPostgreSQL、MySQL、SQLite、MongoDBに永続化できるため、再起動後も保持され、複数のインスタンス間で共有できます。複数のスケジューラーやワーカーが連携する場合は、PostgreSQL、Redis、MQTTをイベントブローカーとして利用できます。
組み込みトリガーは、cron形式、固定間隔、カレンダー形式(毎年・毎月・毎週・毎日の同じ時刻)、単発実行に対応します。トリガーの組み合わせやカスタムトリガーの作成も可能で、ジョブごとに同時実行数、実行許容遅延、ランダムなジッターを設定できます。
主な機能
- 01cron、インターバル、カレンダー形式、単発実行のトリガーと、カスタムトリガーに対応
- 02PostgreSQL、MySQL、SQLite、MongoDB向けの永続ジョブストア
- 03複数のスケジューラーやワーカー間で使える、PostgreSQL、Redis、MQTTのイベントブローカー
- 04同期APIと非同期API(asyncio、Trio)の両方を提供
- 05ジョブの同時実行数、実行遅延、ジッターを制限・設定可能
ユースケース
- Python製Webアプリケーション内で定期的なバックグラウンドジョブを実行する
- 共有データベースを使い、複数のサーバーにまたがってデータ同期やクリーンアップを定期実行する
- 別途タスクキューを用意せず、軽量なジョブキューとして利用する
- ASGIまたはWSGIアプリケーションからasyncioやTrioのタスクを起動する
使う前に知っておきたいこと
- v4.0 系列はプレリリース版であり、移行手段のない互換性のない変更が行われる可能性があるため、本番環境では使用しないでください。
トピック
よくある質問
- apscheduler とは?
- cron、インターバル、カレンダー、単発トリガーに対応し、永続化可能なジョブストアも利用できるPython製スケジューラー/ジョブキューライブラリ。 APScheduler(Advanced Python Scheduler)は、Python関数をスケジュールに従って実行したり、ジョブとしてキューに登録して実行したりするためのライブラリです。小規模なスクリプトでは単一プロセスで動作し、複数のスケジューラーやワーカーが共通のデータストアを共有するマルチノード構成にも対応します。
- apscheduler は無料で使えますか?ライセンスは?
- apscheduler は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- apscheduler は今もメンテナンスされていますか?
- 活発にメンテナンス中。apscheduler の最終コミットは 2026年10月26日 です。
- apscheduler は何に使えますか?
- Python製Webアプリケーション内で定期的なバックグラウンドジョブを実行する 共有データベースを使い、複数のサーバーにまたがってデータ同期やクリーンアップを定期実行する 別途タスクキューを用意せず、軽量なジョブキューとして利用する ASGIまたはWSGIアプリケーションからasyncioやTrioのタスクを起動する
- apscheduler はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/agronholm/apscheduler
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Cronや一定間隔での起動、シャード化したブロードキャストジョブ、フェイルオーバーや再試行に対応する、Webコンソール付きの分散タスクスケジューリングプラットフォーム。
Python向けの分散タスクキュー。バックグラウンドジョブの実行や、ワーカーとメッセージブローカーをまたいだ処理のスケジューリングに対応します。
Redisを基盤とする分散タスクキュー向けのGoライブラリ。スケジューリング、リトライ、優先度キュー、Web UIに対応。
バックグラウンドタスク、AIエージェント、永続ワークフローをオーケストレーションするエンジン。Python、TypeScript、Go、RubyのSDKを備え、永続化レイヤーにPostgresを採用。
サーバーとワーカーノード間で、cron、固定間隔、遅延実行、MapReduce形式のタスクを扱えるJava分散ジョブスケジューリングフレームワーク。