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

カテゴリ

最近のエントリー

最近掲載した画像
  • Python3.4向けにつくったAPIが、Python3.6では動かなくなったので直してみた
  • Windows 10 HomeやProfessionalにおいて行う設定やインストールしたいソフトをまとめてGithub Pagesにまとめてみた
  • JINS PROTECT PROが曇りやすくて実戦投入できない
  • 結婚しました&プロフィール写真は下手にケチらずプロに撮影を依頼するのがオススメ
  • 魔改造の夜の第2夜に出てきた世界的自動車メーカーT車のデザインがぶっ飛んでいた(ネタバレ)
  • Office Lensで素早くその場で名刺や原稿などをスキャン!
  • Office Lensで素早くその場で名刺や原稿などをスキャン!
  • Office Lensで素早くその場で名刺や原稿などをスキャン!
  • Office Lensで素早くその場で名刺や原稿などをスキャン!

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