2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ValueError at set_wakeup_fd only works in main thread の対処法

Last updated at Posted at 2020-05-04

#背景
DjangoでSSOするためにRemoteUserMiddlewareを使おうとしたら、下記のエラーが出る。

ValueError at set_wakeup_fd only works in main thread

しかもリロードするたびに出たり出なかったりする奇怪な現象。

#環境

  • Windows Server 2016 64bit
  • Python 3.8.2
  • Django 3.0
  • Apache 2.4 + mod_wsgi + mod_shib
  • Shibboleth2(今回、直接の関係はない)

#原因
どうやらmod_wsgiのバグ。技術力不足により、理屈は追わない。
ValueError: set_wakeup_fd only works in main thread #143
set_wakeup_fd only works in main thread #156

#対処
2020/5/4時点で根本的には未解決。
仕方なく、この人がやったようにPython3.8.2をPython3.7.7に下げる。

##1. Python3.7.7をインストール
https://www.python.org/downloads/windows/
このへんから持ってきてインストール。
PATHに設定するというチェックボックスは外しておいたほうがよい。

##2. 上記に対応するmod_wsgiをインストール
Python Windows で mod_wsgi を Apache に組み込む方法
いつもお世話になっている記事↑と、それをもとに書いた記事↓。
Django + Apache with mod_wsgi on Windows Server 2016

##3. DjangoのPython Interpreterを変更
環境によって異なるが、PyCharmでは次の通り。
SettingsのProject InterpreterでAddを選択(右端、切れてしまった…)
ss02.png

Python3.7のInterpreterを選択して、Locationフォルダを適当に変更(今回、安直に"venv2"とした)
ss01.png

あとはPackageの「+」ボタンを押してDjangoをインストール。
(しないと、Django関係の識別子がすべてUnresolved referenceになって動かない)

##4. Apacheのhttpd.confにある関係項目を変更

httpd.conf
##python3.8.2
#LoadFile "c:/program files/python38/python38.dll"
#LoadModule wsgi_module "c:/program files/python38/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd"
#WSGIPythonHome "c:/program files/python38"

#python3.7.7
LoadFile "c:/users/administrator/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python37"

なお、フォルダ構成は各自の環境に従う。
ちなみにこれらは、

> mod_wsgi-express module-config

コマンドで出力される内容をコピペすると楽。
WSGIPythonPathの変更も忘れずに。

httpd.conf
##python3.8.2
#WSGIPythonPath d:/apps/shib_test/venv/Lib/site-packages

#python3.7.7
WSGIPythonPath d:/apps/shib_test/venv2/Lib/site-packages

あとはApacheを再起動して完了。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?