ラズパイで自動的にスクリプトを実行するデバッグを始めたが、なーぜか午前0時以降に収集できていない。日中は正常に動いているのに・・・。
下記は前回記事。
で、原因追及のため下記を実行。
------------------------------------------
実行:自動スクリプト起動の実施
------------------------------------------
◆cronの設定
sudo crontab -e
下記追記
@reboot python3 /home/pi/m01_schedule.py
------------------------------------------
トラブル:0時以降に収集できていない事態発生
------------------------------------------
対処:ログを収集し、原因を突き止める。
◆cronログ収集の設定
sudo nano /etc/rsyslog.conf
下記のコメントアウト解除
#cron.* /var/log/cron.log
◆サービス再起動
sudo /etc/init.d/rsyslog restart
◆ログのレベル
sudo nano /etc/default/cron
# For quick reference, the currently available log levels are:
# 0 no logging (errors are logged regardless)
# 1 log start of jobs
# 2 log end of jobs
# 4 log jobs with exit status != 0
# 8 log the process identifier of child process (in all logs)
#
EXTRA_OPTS='-L 15'
◆cron再起動
sudo /etc/init.d/cron restart
◆ログは以下
/var/log/cron.log
結果;
ログを見たらerrorが出てる時刻くらいで、内容が分からん。
◆cronの設定(標準出力とエラー出力が一緒に出る)
sudo crontab -e
下記追記
@reboot python3 /home/pi/m01_schedule.py>> /tmp/test.log 2>&1
一晩明けて、/tmp/test.logを見てみると・・・
-------------------------------------------------------
2021_05/09_23:55_13 ===Process done===
2021_05/10_00:05_14 ===Process started===
WeatherTable exists, then deleted old one and created new one
2021_05/10_00:05_15 table done
Traceback (most recent call last):
File "/home/pi/m01_schedule.py", line 168, in <module>
main()
・・・
・・・
・・・
StoreDB(List_all,cur,connection)
File "/home/pi/a02_web.py", line 67, in StoreDB
cur.execute(sql1,(List_all[0][i], List_all[1][i], List_all[2][i], List_all[3][i], List_all[4][i], List_all[5][i]))
IndexError: list index out of range
-------------------------------------------------------
どこがおかしいのか特定できた。
えーっと、あぁ…なるほど、、、要はスクリプトがいけてないのか。
なぜか0時を越えたときだけに起こるのは分からないが、、、。
まぁ取得したデータ数がなんか違うんだろな…中身見てないから仕方ない。
「配列のレンジを越えている」
スクレイピングが完了して、データベースに格納する際に何か起きている。
格納する際のループが固定値だったので(テストでとりあえず入れておいたのがダメぽん…)、配列データから取得するように変更。
これでいけるか?