当ブログの記事の情報を定期的に呟くTwitter botを自作してレンタルサーバー上で動かしているのですが、数日前からそれがうまく動いていませんでした。
恒久的な対応は未着手ですが、ひとまずは今まで通り呟くようにしたのでその対応を記事にしたいと思います。
原因
先に原因を述べます。(既にタイトルでネタバレしていますが…)
記事の情報を取得するために呼び出しているWordPress REST APIのパラメータ間違いが原因でした。
当該パラメータは記事の情報を何件取得するか指定するものです。
数日前まではそれを「100」としていましたが、総記事数が100を超えたので「150」に変更しました。
これがダメでした。
APIのドキュメントに当該パラメータのデフォルト値の記載はあったんですが最大値の記載がなかったので特に気にすることなく100を超える数値を設定してしまいました。
原因に辿り着く手がかり
前述の通り、数日前までは動いていましたし、最新記事の情報をツイートする方は最近でも問題ありませんでしたのでプログラムの問題である可能性は低いと思ったのでひとまずソースを追うのは後回しにしました。
動いていないことに気が付いたのはたまたまbotのログファイルを見たからなんですが、そこにエラーが出始めた日時近辺に何をしたのかを改めて考えたらパラメータの値を変更したことに思い至った次第です。
暫定対応
暫定的な対応としてはパラメータ値を「150」から「100」に戻しただけです。
これによって記事公開日の新しい順に100件の記事情報を取得することになります。
それよりも古い記事は情報を取得することができず呟かれることがなくなりますが、ひとまず目をつぶります。
恒久対応
WordPress REST APIの仕様上、100件ごとでしか取得できないので取得開始の位置を100ずつずらしていく感じにすれば全記事の情報を取得できることになります。
APIを複数回呼ぶことになりますが、そこまで処理時間にシビアなものでもないので大きな問題はないと思います。
まとめ
トラブル解決に役立つ情報をログファイルに出力するようにしていた過去の自分を褒めてあげたいですね。
(自画自賛です、すみません)
botがツイートできなかったときに通知する仕組みも既に実装してあるのでまたこの機能をonにするのもいいかもしれないですね。
稼働当初は使っていたのですが特に大きな問題も発生しなかったので程なくしてoffにしていた機能になります。
自分でプログラムを作るとこういったところにも拘れるのがいいですよね。
コメント