ロリポップのcronでPythonスクリプトを自動実行させるときの注意

レンタルサーバーのロリポップにはcronという機能があり,Pythonなどで作成されたCGIを設定した時刻に自動で実行させることできるので,大変重宝している。

さて,そのような便利な機能であるが,最初にPythonスクリプトをcronで自動で実行させようとしたとき,次のようなエラーが出てその理由が分からずに大変困った。

500 ERROR Internal Server Error

そのとき,自動で実行させようとしたPythonスクリプトは正しく動作することを確認しており,なぜこのようなエラーが出るのか皆目見当がつかなかった。

そのスクリプトは,cronを使わないで実行させると,何の問題もなく正しく動作するので,なぜそのようなエラーがでるのか,ひとしきりあれこれ調べまくることになった。

そして,何時間も調べたのち,やっとエラーの原因が分かったのだが,分かってみると,実に簡単なことでエラーが出ていた。

それは,cronで自動実行させるPythonスクリプト内に何らかの出力がある場合,それをサーバーがメールで送ろうとするせいか,そのメールの送信先のメールアドレスが設定されていないと,次のエラーが出るのであった。

500 ERROR Internal Server Error

なので,cronでPythonを自動で実行した結果を受け取るメールアドレスを設定してやると,エラーが出ず,正しくスクリプトが実行された。

もし,Pythonスクリプト内にprint文のような何らかの出力がなければ,エラーが起きなかったのだが,スクリプト内にprint文があったため,エラーが起きていたのであった。

しかし,Pythonスクリプトが何らかの理由で正しく動作しなかったときも何らかの出力がある可能性があることを考えると,cronによる自動実行を設定する場合,実行結果を受け取るメールアドレスを登録しておく方がよいと思う。