ダム放流通知botの内部処理を変更しました。ほぼ自分用メモ。
変更内容
ダム放流通知botはcronを使って動かしているのですが、最近実行中に切られることが多くなりました。
ジョブの最大実行時間は3分に制限されていて、超えると強制終了らしいのですが、ダム放流通知botの動作はテスト環境では1分もかからず終了する。
とはいえ、何も対策しないのもなーと言うことで細かい修正をしました。
ざっくりな変更点は3つ
・プログラム内ループの廃止
・ツイート処理の分離
・実行時間の変更
プログラム内ループの廃止
ずっとプログラム内で地域コードのCSVを読み込んでループする処理をしていました。
今回の変更で、CSVの読み込みはやめて、実行時に引数で地域コードを渡すようにしました。
この変更で毎回北海道から順に取得していた処理を、
1時間のうち1回目と3回目は
北海道 → 沖縄の今までと同じ順で取得
2回目と4回目は
近畿 → 沖縄、北海道 → 中部と途中から取得
としました。
今までだと順に処理しているので、毎回ジョブが切られるタイミングが似たような場所だと沖縄まで取得できない可能性も出てくるので、その対策。
今の所ジョブが切られるのは1日に数回だけなので問題は出ていないですが、今後ひどくなったら4回すべての取得順を変えるつもり。
ツイート処理の分離
たいして大きなプログラムでもないから、取得からツイートまでプログラムで流れでやっていたけど、ツイートはツイート処理で分けました。
毎回取得処理を行う前に、前回つぶやきに失敗しているものがあればそれをツイートしてから始めます。
そして取得処理がすべて終わったらまたツイート処理を実行と言う感じに変えました。
実行時間の変更
今までは00,15,30,45分は他ユーザーのジョブと被ることがあるので避けて01,16,31,46分にしていました。
それをもう少し考慮して02,17,32,47分に変更しました。
その他
ジョブの最大実行時間が3分とされているのにあっさり切られるのが気になっています。
時間じゃなくてメモリかCPU負荷で落とされているのかもしれないですが謎です。
18時にソースを一式入れ替えたので、まだ様子見状態です。
放流通知文も新しいものがまだ出てこないので、動作確認も取れていないので少し心配です。
※2017/03/03 バグって起動直後に静かにエラーも出さずに落ちてたので修正しました(笑)
コメント