Re:dashで取得したデータをSlackに投稿する(とRe:dash内pythonを書くときの注意点)
やりたい
- Re:dashで取得したデータを、pythonデータソースを使って、Slackに投稿したい
- Re:dashのalert機能は便利だが、条件が解消しないとずっと出続けてしまう問題があった
準備
Slack投稿用のサンプル
import requests
import json
SLACK_URL = "[WEBHOOK_URL]"
content = "`Daijin` は `Hentai`"
payload = {
"text": content
}
data = json.dumps(payload)
response = requests.post(SLACK_URL, data)
実際にやったこと
- Re:dashで取得したある条件に合ったデータをSlackに投稿する
- Re:dash上で定期実行するが、その時間を秒単位では指定できず、ほっとくと重複したデータを投稿してしまう。そこをSlack APIを使って既に投稿したデータは投稿しない処理を加えた。
- 結果75行の割と大きめのソースとなった
その際ハマった注意点
- python側で使うライブラリは、
Data Source
の画面で追加できる。但し、標準ライブラリのみで、pip install
が必要なものはGUIだけではできなそうだった
ここでsaveするだけでimportできるようにはなった - なぜか関数を作れない。関数を作って実行すると関数内からglobal変数にアクセスできない
- 引数付きのクエリは実行できなそうである
- get_query_resultではクエリは実行されない
- redashの定期実行は割とブレる。1minute毎のやつでも30秒くらいずれる。弊社の環境だと、なぜか90秒サイクルで実行されてた。1秒以内で実行されるクエリなんだが
13:32:20
13:33:50
13:35:20
13:36:50
13:38:20
参考
Author And Source
この問題について(Re:dashで取得したデータをSlackに投稿する(とRe:dash内pythonを書くときの注意点)), 我々は、より多くの情報をここで見つけました https://qiita.com/8maki/items/a8befb1523069d6eac34著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .