«« Windows 10 HomeやProfessionalにおいて行う設定やインストールしたいソフトをまとめてGithub Pagesにまとめてみた | 手作り省エネデジタルフォトフレームの作り方が気になる »»
[ 結論 | バグ発生個所の探し方 ]
Python3.4からPython3.6に上げたら動作しなくなったAPIについて、ファイルを開くopen命令まわりを変えたら自分の場合再び動くようになりました。
過去に自分が作ったWebアプリの動作を久々に見てみたら動かなくなってました。
どうもAPIが問題で、500エラー出てるのが原因のようです。
2年ぐらい前にレンタルサーバーXserverが対象としているPython3.4向けで構築しました。
それから時が流れXserverはPython3.6へ移行したのでエラーが出るようになったようです。
結論としては、冒頭のPythonバージョン指定を変えるのはもちろん
# 修正前 #!/usr/bin/python3.4 # 修正後 #!/usr/bin/python3.6
open命令回りの
f = open(JSONfile,'r') json_data = json.load(f) f.close()
というコードについて
try: with open(JSONfile,'r') as f: json_data = json.load(f) except json.JSONDecodeError as e: json_data['JSONDecodeError'] = e except: json_data['Error'] = sys.exc_info()
というふうに書き直したら動くようになりました。
Xserverのログを見ると「End of script output before headers:」が出て、結局どこが問題なのか行番号を示さないから、どこの何が原因なのかよくわからんかった。
とりあえずContent-Typeについて改行コードを直すとよいらしい記事も見かけたのでやってみたり。
その際、Content-Typeを最初の方に持っていって、かつエラーが発生しそうなところの直前にprint文をもっていってエラー個所を探していきました。
# 修正前 print("Content-Type: application/json;charset=utf-8\n") # 修正後 print("Content-Type: application/json;charset=utf-8\r\n\r\n")
面倒くさい。
多分もっと効率よいデバッグ方法があるんだと思うのですけど、どうすれば良いものか?
■広告
投稿者 kuze : 2021年5月 5日 21:20
«« Windows 10 HomeやProfessionalにおいて行う設定やインストールしたいソフトをまとめてGithub Pagesにまとめてみた | 手作り省エネデジタルフォトフレームの作り方が気になる »»
コメント