逐次的に登録されたジョブ(コマンド)を実行する機能を有するジョブマネジャーです。 並列処理も可能になりました。(Since 0.7) 主にウェブアプリケーションのバックグラウンド処理を実現するために開発されています。
# | 機能名 | 説明 | 対応状況 |
---|---|---|---|
1 | ジョブマネージャ監視 | マネージャが異常終了した場合、設定した数だけ再起動することができます。 また、期間指定するなど高度な設定も可能です。 |
○ |
2 | コマンド実行制御 - ホワイトリスト |
実行可能なジョブをホワイトリスト形式で制御することができます。 | ○ |
3 | ジョブタイムアウト | ジョブ実行時のタイムアウトを設定することができます。 | ○ |
4 | ログ出力 | マネージャ、データベースなどのログを出力することができます。 また、ログのローテートやsyslog出力など、python loggingに対応するすべての出力機能に対応しています。 |
○ |
5 | ジョブグループ | 複数のジョブをグループ化し、指定した順番で実行することができます。 | ○ |
6 | ロールバック機能 | ジョブに失敗した場合に、実行するコマンドを設定することができます。 | ○ |
7 | フィニッシュコマンド機能 | ジョブ終了後に、実行するコマンドを設定することができます。 | ○ |
8 | マルチホスト対応 | 各ホストのPysilhouetteにユニークなキーを設定しておくことで、 1データベース、Nホストに対応することが可能です。 |
○ |
9 | 即時ジョブ実行 | 指定したジョブを即時実行することができます。(Since 0.7) | ○ |
10 | スケジュール実行 | 指定した時間でジョブを実行することができます。 | × |
Pysilhouetteは、MITライセンスを採用しています。
Pysilhouetteは、SQLAlchemyを使用してデータベースに接続しています。 サポートしているデータベースの詳細は、こちらを参照してください。
ソースのINSTALLを参照してください。
こちらへ
ログに関する設定を行う設定ファイルです。 デフォルトパスは、/etc/opt/pysilhouette/log.confです。 Pysilhouetteのロギング機能は、Python loggingを使用しています。 設定ファイルの詳細は、こちらを参照してください。
ホワイトリストに関する設定を行う設定ファイルです。 デフォルトパスは、/etc/opt/pysilhouette/whitelist.confです。 Pysilhouetteで実行を許可したいコマンドを書きます。 コマンドは改行で区切られます。
例) /bin/echo /bin/ls /bin/pwd
Pysilhouetteに関する設定を行う設定ファイルです。 デフォルトパスは、/etc/opt/pysilhouette/silhouette.confです。
Pythonコマンドのパスを設定します。
例) env.python=/usr/bin/python
ログ出力設定ファイルパスを設定します。 ログ出力設定ファイルついてはこちらを参照してください。
例) application.log.config=/etc/opt/pysilhouette/log.conf
マルチホスト構成時に、Pysilhouetteを判別する値を設定します。 Pysilhouette毎に一意である必要があります。 0~9, a~fまでの半角英数字が使えます。 フォーマットは8文字-4文字-4文字-4文字-12文字です。 各文字列の間は-(ハイフン)で区切ってください。
例) env.uniqkey=aaaaaaaa-0000-0000-0000-aaaaaaaaaaaa
Pysilhouetteのデーモンの標準入力の設定です。
例) daemon.stdin=/dev/null
Pysilhouetteのデーモンの標準出力の設定です。
例) daemon.stdout=/var/log/pysilhouette/stdout.log
Pysilhouetteのデーモンの標準エラーの設定です。
例) daemon.stdout=/var/log/pysilhouette/stdout.log
監視デーモンで使用するPythonコマンドのパスを設定します。
例) observer.target.python=/usr/bin/python
監視デーモンで監視するスケジューラーのパスを設定します。 スケジューラーは、JOBの実行をスケジューリングするデーモンです。
例) observer.target.scheduler=/opt/pysilhouette/lib/python/pysilhouette/scheduler.py
監視デーモンで監視するパフォーマーのパスを設定します。 パフォーマーは、JOBを実行するデーモンです。
例) observer.target.performer=/opt/pysilhouette/lib/python/pysilhouette/performer.py
監視デーモンで監視する並列処理スケジューラーのパスを設定します。 並列処理スケジューラーは、JOBを並列スケジューリングするデーモンです。
例) observer.target.asynscheduler=/opt/pysilhouette/lib/python/pysilhouette/asynscheduler.py
監視デーモンで監視する並列処理パフォーマーのパスを設定します。 並列処理パフォーマーは、JOBを並列実行するデーモンです。
例) observer.target.asynperformer=/opt/pysilhouette/lib/python/pysilhouette/asynperformer.py
この設定は、監視デーモンがスケジューラーやパフォーマーの停止を 検知したときに、停止回数の合計がobserver.restart.countの超えるまで、 再起動を試みます。 停止回数の合計がobserver.restart.countの超えたときPysilhouetteを停止します。 監視デーモンが停止を検知した回数は、ステータスファイルに保持されます。
例) observer.restart.count=5
スケジューラーやパフォーマーの再起動の回数に達する時間が、 observer.restart.count.clear.time より長い場合、 ステータスファイルをクリアし、スケジューラーやパフォーマーを監視します。 短い場合、Pysilhouetteを停止します。 単位は秒です。
例) observer.restart.count.clear.time=300
スケジューラーやパフォーマーを監視する間隔を設定します。 単位は秒です。
例) observer.check.interval=5
ステータスファイルのパスを設定します。 スケジューラーやパフォーマーの停止を検知した回数を保持するために ステータスファイルを利用します。
例) observer.status.path=/var/opt/pysilhouette/status
FIFOファイルのグループを設定します。
例) performer.mkfifo.group.name=pysilhouette
FIFOにperformer.mkfifo.stop.codeが書き込まれた時、 パフォーマーは停止します。
例) performer.mkfifo.stop.code=2
FIFOにperformer.mkfifo.ignore.codeが書き込まれた時、 パフォーマーはJOBの実行を遅延します。
例) performer.mkfifo.ignore.code=1
FIFOのパスを設定します。 スケジューラーとパフォーマーが同期をとるためにFIFOを利用します。
例) performer.mkfifo.path=/tmp/pysilhouette.fifo
FIFOにperformer.mkfifo.start.codeが書き込まれた時、 パフォーマーはJOBを実行します。
例) performer.mkfifo.start.code=0
FIFOファイルのオーナーを設定します。
例) performer.mkfifo.user.name=pysilhouette
FIFOファイルの権限を指定します。
例) performer.mkfifo.perms=0666
FIFOファイルのグループを設定します。
例) asynperformer.mkfifo.group.name=pysilhouette
FIFOにasynperformer.mkfifo.stop.codeが書き込まれた時、 パフォーマーは停止します。
例) asynperformer.mkfifo.stop.code=2
FIFOにasynperformer.mkfifo.ignore.codeが書き込まれた時、 パフォーマーはJOBの実行を遅延します。
例) asynperformer.mkfifo.ignore.code=1
FIFOのパスを設定します。 スケジューラーとパフォーマーが同期をとるためにFIFOを利用します。
例) asynperformer.mkfifo.path=/tmp/pysilhouette.fifo
FIFOにasynperformer.mkfifo.start.codeが書き込まれた時、 パフォーマーはJOBを実行します。
例) asynperformer.mkfifo.start.code=0
FIFOファイルのオーナーを設定します。
例) asynperformer.mkfifo.user.name=pysilhouette
FIFOファイルの権限を指定します。
例) asynperformer.mkfifo.perms=0666
並列処理スケジューラーがFIFOにコードを書き込む間隔を設定します。 単位は秒です。
例) asynscheduler.interval=10
ジョブで実行されたコマンドの標準出力/標準エラーを、データベースに保存する限界サイズ
例) job.popen.output.limit=1048576
並列処理可能なスレッドプール数を設定します。
例) asynperformer.thread.pool.size=5
逐次処理スケジューラーがFIFOにコードを書き込む間隔を設定します。 単位は秒です。
例) scheduler.interval=10
ジョブを実行するときのLANGを設定します。
例) job.popen.env.lang=C
ジョブを実行するときのタイムアウトを設定します。 ジョブの実行時間がタイムアウトを超えると、 ジョブが終了します。 単位は秒です。
例) job.popen.timeout=3600
ジョブのタイムアウトをチェックする間隔を設定します。 単位は秒です。
例) job.popen.waittime=10
ホワイトリスト機能を利用するかを設定します。 1=有効 0=無効
例) job.whitelist.flag=1
ホワイトリストのファイルパスを設定します。
例) job.whitelist.path=/etc/opt/pysilhouette/whitelist.conf
Pysilhouetteで利用するデータベースのバインドを設定します。 RFC-1738で定義されているスタイルで設定してください。 さらに詳しい設定についてはSQLAlchemyのサポートデータベース を参照してください。
MySQL mysql://localhost/<データベース名> mysql://<ユーザ名>:<パスワード>@<ホスト名>/<データベース名> mysql://<ユーザ名>:<パスワード>@<ホスト名>:<ポート番号>/<データベース名> PostgreSQL postgres://<ユーザ名>:<パスワード>@<ホスト名>:<ポート番号>/<データベース名> SQLite※Karesansuiの実行権限で読み取り・書き込み可能である必要があります。 sqlite:////<絶対パス>/<ファイル名>-絶対パスで定義 sqlite:///<相対パス>/<ファイル名>-相対パスで定義 例) database.url=sqlite:////var/opt/pysilhouette/pysilhouette.db
コネクションプールの利用可否を設定します。 0=利用しない 1=利用する ※SQLiteではコネクションプールの設定は利用できません。設定は無視されます。
例)database.pool.status=0
コネクションプールの最大数を設定します。
例)database.pool.max.overflow=10
通常時のコネクションプール数を設定します。
例)database.pool.size=1