Help us understand the problem. What is going on with this article?

LuigiのCentral Schedulerで見れること

More than 3 years have passed since last update.

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の中でタスクの開始時刻と終了時刻を引き算して普通に計算してたりする。

どういうこっちゃ・・・

以上。

bwtakacy
お仕事:データリサーチエンジニア 技術:C/Java/Python, PostgreSQL/Hadoop/Spark/TreasureData, 機械学習, DeepLearning
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした