Мне нравится иметь несколько экземпляров одного и того же приложения wsgi, работающих на сервере apache/mod_wsgi. Приложения настраиваются двумя файлами .conf в conf-available/conf.enabled. Первое приложение работает нормально, второе (до сих пор не пробовал третье) завершается со следующей ошибкой (из /var/log/apache/error.log):
- ImportError: Обнаружено изменение интерпретатора — этот модуль может быть загружен только в один интерпретатор для каждого процесса.
- Во время обработки вышеупомянутого исключения произошло другое исключение:
- ...
- ImportError: Расширение C: Обнаружено изменение интерпретатора — этот модуль может быть загружен только в один интерпретатор для каждого процесса. не построен. Если вы хотите импортировать pandas из исходного каталога, вам может потребоваться запустить «python setup.py build_ext --inplace --force», чтобы сначала собрать расширения C.
Мои файлы .conf выглядят одинаково, только с изменением My_App1 для каждого:
WSGIDaemonProcess My_App1 python-home=/var/wsgi/My_App1/venv
WSGIProcessGroup My_App1
WSGIScriptAlias /MyApp1 /var/wsgi/My_App1/odmf.wsgi
<Directory /var/wsgi/My_App1>
Require all granted
</Directory>
Я все еще новичок в apache2/mod_wsgi, но я понимаю директиву WSGIProcessGroup, что я запускаю разные процессы для каждого приложения. Как панды могут знать, что их нужно запускать в нескольких экземплярах? Я использую venv
для виртуальных сред. Поскольку на более позднем этапе приложения могут работать в разных версиях, необходимо использовать какие-то разные среды. Однако я получаю те же ошибки, когда пытаюсь использовать одну и ту же среду для обоих приложений.
ОС: Убунту 18.04
Apache/2.4.29 (Ubuntu) OpenSSL/1.1.1c mod_wsgi/4.5.17 Python/3.6 configured