LoginSignup
12
5

More than 3 years have passed since last update.

Kaggleのコミット状況をLINEで受け取る

Last updated at Posted at 2019-08-08

はじめに

timeoutだったり、メモリエラーだったり、実装ミスだったり
コミットエラーになることがあります。
数時間コミットの完了を待った後にカーネルエラーとか出てると泣けます。。。(特に実装ミスの時)

なので、Kernelのコミットの状態をLINEに通知するようなコードを書きました。

・実際の通知
Screenshot_20190806-163757.png

文章だけだと寂しいので、スタンプも使います。

LINEスタンプ一覧

前提条件

・kaggleのAPIが使える状態であること。
・LINE notrifyでアクセストークンが払い出されていること。

ソース

import requests
import sys
from kaggle.api.kaggle_api_extended import KaggleApi


# https://www.kaggle.com/[kaggle_id]/[kernel_name] という構成です。
kaggle_id = "KAGGLE_ID"
kernel_name = ["KERNEL_NAME","KERNEL_NAME2"] # 複数のカーネルを通知するようにしています。
token = "YOUR_LINE_TOKEN"

def send_line_notification(message, line_token, stcID):
    endpoint = 'https://notify-api.line.me/api/notify'
    message = "\n{}".format(message)
    stcPID = "2"
    payload = {'message': message,
               'stickerId': stcID,
               'stickerPackageId': stcPID
    }
    headers = {'Authorization': 'Bearer {}'.format(line_token)}
    requests.post(endpoint, data=payload, headers=headers)

def kernel_status_check(api, kaggle_id, kernel_name):
    try:kernel_status = api.kernel_status(kaggle_id,kernel_name)
    except: sys.exit(1)

    if kernel_status["status"] == "complete":
        send_line_notification(kernel_name + ":\nSuccessed",token,"144")
    elif kernel_status["status"] == "running":
        send_line_notification(kernel_name + ":\nRunning",token,"502")
    else:
        send_line_notification(kernel_name + ":\nFailed: \n" + kernel_status["failureMessage"],token,"154")


KaggleApi.competitions_list
api = KaggleApi()
api.authenticate()

for kname in kernel_name:
    kernel_status_check(api, kaggle_id, kname)

あとはcronやタスクスケジューラなどで定期実行してください。

参考

・kaggleのAPI部分の参考にさせていただきました。
「Kaggle API」を Python で実行してみた

・LineのAPI部分の参考にさせていただきました。
コピペで使える。Kaggleでの実験を効率化する小技まとめ

12
5
1

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
12
5