LoginSignup
7
5

More than 5 years have passed since last update.

LuigiのCentral Schedulerで見れること

Last updated at Posted at 2016-11-07

luigiでタスク実行にかかった時間を取得するの続き。

luigiにあるCentral SchedulerというのがWebUI画面を持っているとのことで、これを使えばタスクの実行時間が確認できるのではないかと思って調査した結果をまとめる。

結果、確かにタスクの実行時間は確認できるのだが、その方法はドキュメントに書かれておらずソースコード上のコメント(!!)にしか書かれていなかった。

luigiさん、君はずっとそういうスタンスなのね。。。

以下、luigiのCentral Schedulerを動作させる手順。

インストール

luigi

$ pip install luigi

PostgreSQL

luigiのスケジューラの履歴情報を保存する先としてRDBが選べる。
SQLAlchemyを使っているので、Oracle, MySQL, PostgreSQL, SQLite, SQL Serverが使えるっぽい。

PostgreSQLを今回は使う。luigiがPostgreSQL接続用に使うpsycopg2もインストールしておく。

$ pip install psycopg2
$ brew install postgresql
$ cd Develop/PostgreSQL/pg_data
$ initdb --no-locale .
$ vim postgresql.conf
$ cd ..
$ pg_ctl start -D pg_data

PostgreSQLの設定

luigiの履歴情報を格納する先としてluigiデータベースを作成し、接続用ユーザluigiを作成しておく。

$ psql -d postgres
postgres=# CREATE USER luigi WITH PASSWORD 'luigi';
CREATE ROLE
postgres=# CREATE DATABASE luigi;
CREATE DATABASE
postgres=# GRANT ALL ON DATABASE luigi TO luigi;
GRANT

luigiの設定

luigi.cfgというファイルを作業ディレクトリに作成する。

$ cat luigi.cfg 
[scheduler]
record_task_history = True
state_path = /Users/bwtakacy/Develop/luigi/luigi-state.pickle

[task_history]
db_connection = postgresql://luigi:luigi@localhost/luigi

起動・終了

luigidの起動

luigi.cfgを作ったディレクトリで以下のコマンドを実行する。

$ luigid --background --logdir /Users/bwtakacy/Develop/luigi/logs

luigidの終了

ドキュメントには書かれていないが、luigiのソースコードを見るとシグナルハンドラが設定されているので、SIGTERMかSIGINTを送ると正常終了できることがわかる。

$ pgrep -fl luigid
$ kill -15 <PID>  ## kill -2 でもOK

なお、SIGKILLを送ってしまうと、スケジューラの状態を保存するpickleファイルを書き出す前にluigidプロセスが終了してしまうため、再起動時にタスクの実行状況が失われてしまう。

WebUI

トップ画面

http://luigidが動作しているサーバのホスト名:8082にアクセスすると以下のような画面が見える。

スクリーンショット 2016-11-07 22.55.46.png

ここのタスクの親子関係が確認できる

スクリーンショット 2016-11-07 22.59.16.png

history画面

ドキュメントには書かれていないし、トップ画面からのリンクも存在しないが、http://luigidが動作しているサーバのホスト名:8082/historyにアクセスすると、実行したタスクの起動時間、パラメータなどが見える。

これまたソースコードを読んで発見した。

スクリーンショット 2016-11-07 23.03.16.png

ここのリンク先でタスクのイベントが発生した時刻が見れる。

スクリーンショット 2016-11-07 23.04.14.png

tasklist画面

同じく、ソースコードを読むことでしか分からないが、http://luigidが動作しているサーバのホスト名:8082/tasklistにアクセスすると、実行したタスクの一覧が出る。

スクリーンショット 2016-11-07 23.00.13.png

それぞれのリンク先にて、過去の実行時の実行時間の分布が見える。

スクリーンショット 2016-11-07 23.01.04.png

やった!!
これでローカルでイベントを取らなくても良くなるわ〜

きっとCentral SchedulerにPROCESSING_TIMEイベントを送って記録しているんだろうな〜

とか思ってソースコードを読むと、tasklistを表示するHTMLの中でタスクの開始時刻と終了時刻を引き算して普通に計算してたりする。

どういうこっちゃ・・・

以上。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5