sha256
@sha256

Как обратится к глобальной переменной из службы в python?

Друзья, всем привет!
Пишу свой первый веб-сервис на питоне, с помощью связки spyne -> mod_wsgi -> apache поднял часть которая отвечает за общение с приложением. Само приложение пришлось вынести из mod_wsgi, т.к. каждый запрос прогружает всё заново и дико тормозит ответы. Как вынести приложение в оперативную память, чтобы один раз запустить и через mod_wsgi только обращаться к нему?

Сейчас стартую скрипт в интерактивном режиме:
def startup():
      global model
      from sklearn.externals import joblib
      model= joblib.load('model')
      print('Model_loaded')


Но из mod_wsgi не могу достучаться до переменной:
global model

Буду признателен за ссылки на примеры!
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
sha256
@sha256 Автор вопроса
Проблема лечится внутренней демонизацией mod_wsgi, вот пример работающего конфига Apache:
<VirtualHost *:80>

    ServerName get
    
    WSGIDaemonProcess pybsk processes=1 threads=5
    WSGIScriptAlias /Get /var/www/python/pymain.py
    
    WSGICallableObject 'application'
    LogLevel info
    DocumentRoot /var/www/python

    <Directory /var/www/python>
        WSGIProcessGroup get
        WSGIApplicationGroup %{GLOBAL}
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </Directory>
    <IfDefine MOD_WSGI_LOAD_PYTHON_DYLIB>
        LoadFile ''
    </IfDefine>
    
    WSGIMapHEADToGET Auto

</VirtualHost>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Hivemaster
@Hivemaster
Админ, который хочет программировать
Глобальные переменные - зло.
Ответ написан
Biba_neBoba
@Biba_neBoba
Если ошибка в том, что не найдена переменная model, то можно попробовать объявить её до функции.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы