Python3.4向けにつくったAPIが、Python3.6では動かなくなったので直してみた : つねづね思ふこと

«« Windows 10 HomeやProfessionalにおいて行う設定やインストールしたいソフトをまとめてGithub Pagesにまとめてみた | 手作り省エネデジタルフォトフレームの作り方が気になる »»

Python3.4向けにつくったAPIが、Python3.6では動かなくなったので直してみた

2021年5月 5日

このエントリーをはてなブックマークに追加
Python3.4からPython3.6に上げたら動作しなくなったAPIについて、ファイルを開くopen命令まわりを変えたら自分の場合再び動くようになりました。


[ 結論 | バグ発生個所の探し方 ]

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にまとめてみた | 手作り省エネデジタルフォトフレームの作り方が気になる »»


自己紹介
PHPやVBによるコーディングやシステムエンジニアを仕事にしています。
主にiPhoneアプリの紹介やWeb開発などのPC系の話題と、アニメやゲームなどのサブカルな話題を取り扱っています。

[PR]

instagram

カテゴリ

最近のエントリー

最近掲載した画像
  • 「君たちはどう生きるか」は父親を気にするかで評価が別れそう(ネタバレあり)
  • 画像生成AIソフトでしばらく毎日SNSに画像を上げてみたけどネタ出しについて
  • ホットクックを使えば一人で並行して色々作りやすくなるのでオススメ
  • ホットクックを使えば一人で並行して色々作りやすくなるのでオススメ
  • ホットクックを使えば一人で並行して色々作りやすくなるのでオススメ
  • Python3.4向けにつくったAPIが、Python3.6では動かなくなったので直してみた
  • Windows 10 HomeやProfessionalにおいて行う設定やインストールしたいソフトをまとめてGithub Pagesにまとめてみた
  • JINS PROTECT PROが曇りやすくて実戦投入できない

RSS
更新情報はRSSをご利用下さい