以下の内容はhttps://karupoimou.hatenablog.com/entry/20211213/1639405861より取得しました。


【レンタルサーバー】バリューサーバー新仕様マイグレーションへの対応メモ【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でエラーが出る

参考ページ
Flask - CGIサーバーで動作するPythonのimportエラー|teratail

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

これらも関数内に移動することでエラーを回避できる




以上の内容はhttps://karupoimou.hatenablog.com/entry/20211213/1639405861より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14