【レンタルサーバー】バリューサーバー新仕様マイグレーションへの対応メモ【Python/Flask】
バリューサーバーのアップデート
2021/12/13頃に以前からなろう作者分析などのサイトで利用しているvalue-serverが新仕様にアップデートされ、それに伴い手動で対応しなければならなかったことのメモを書き残しておきます
環境
Python 3.7.4
主要パッケージ
- Flask
- Pandas
pyenvでPython,Flaskを入れて動かしている感じです
上記の環境で「500 Internal Server Error」がでてしまいwebページが正常に表示されなかったので以下の対応を行いました
対応メモ
index.cgi
#!/virtual/アカウント名/.pyenv/versions/3.7.4/bin/python # -*- coding: utf-8 -*- import cgitb cgitb.enable() from wsgiref.handlers import CGIHandler from main import app import os os.environ["SERVER_NAME"] = "https://mirunovel.com/" os.environ["SERVER_PORT"] = "443" os.environ["REQUEST_METHOD"] = "GET" os.environ['OPENBLAS_NUM_THREADS'] = "1" CGIHandler().run(app)
修正箇所
import os
os.environ["SERVER_NAME"] = "https://mirunovel.com/"
os.environ["SERVER_PORT"] = "443"
os.environ["REQUEST_METHOD"] = "GET"
os.environ['OPENBLAS_NUM_THREADS'] = "1"
の部分を追記
os.environ['OPENBLAS_NUM_THREADS'] = "1"
この部分でマルチスレッドを無効化しないとnumpyでエラーが出る
main.pyの修正
NumpyおよびNumpyを依存パッケージとして使用しているパッケージ(pandasなど)を関数内でimportする
ダメな例
import requests import glob import pands as pd def remove_check_xlsx(): df = pd.DataFrame(exportlist, index=column_name) ~~
良い例
import requests import glob def remove_check_xlsx(): import pands as pd df = pd.DataFrame(exportlist, index=column_name)
追記
たぶん問題の原因となると考えられるその他のパッケージ
joblib
sqlite3
これらも関数内に移動することでエラーを回避できる