なろう分析記録

『小説家になろう』をふくめ『ネット小説投稿サイト』を分析する。コード置き場,主にPython,javascript,たまに創作。

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

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