Конфликт импорта при запуске приложения фляги с apache mod_wsgi в Windows - PullRequest
0 голосов
/ 05 февраля 2019

Я разрешаю вам спросить вас о проблеме, которая возникает у меня с приложением флеш-хостинга с вашим переносом mod_wsgi на windows

У меня есть два приложения фляги и только одно может быть живым в одно и то же время из-законфликт при импорте

, т. е. если запрос приложения 1 у меня есть ответ, то при запросе приложения 2 возникает внутренняя ошибка сервера с ошибкой в ​​журнале ... затем, если я перезапускаю apache и запрашиваю приложение 2, у меня естьответ, но если я запрашиваю приложение 1, у меня та же внутренняя ошибка сервера. Если я комментирую некоторый импорт, например, numpy, оба приложения могут быть активны одновременно

Любая помощь будет принята, если у вас есть идея или ссылка илиОтвет об этой проблеме?

Моя установка описана ниже

Заранее спасибо за время тура и ваши работы

Александр

Журнал ошибки
mod_wsgi (pid = 4936): не удалось выполнить файл сценария Python 'D: /exec/Apache24/htdocs/wsgi/api_test_2.wsgi'.
mod_wsgi (pid = 4936): возникла исключительная ситуация при обработке сценария WSGI 'D: /exec/Apache24/htdocs/wsgi/api_test_2.wsgi'.
Трассировка (последний вызов был последним):
Файл "D: / exec / Apache24 /htdocs / wsgi / api_test_2.wsgi ", строка 3, в
из приложения импорта api_test_2 в качестве приложения
Файл" D: / exec / wsgi_api / api_test_2 \ api_test_2.py ", строка 2, в
import numpy
Файл "c: \ python \ python36 \ lib \ site-packages \ numpy \ __ init__.py", строка 142, в
из.import core
Файл "c: \ python \ python36 \ lib \ site-packages \ numpy \ core \ __ init__.py", строка 16, в
из.import multiarray
Файл "c: \ python \ python36 \ lib \ site-packages \ numpy \ core \ multiarray.py", строка 12, в
из.переопределения импорта
Файл "c: \ python \ python36 \ lib \ site-packages \ numpy \ core \ overrides.py", строка 46, в
"" ")
RuntimeError: метод execute_array_function уже имеетdocstring

#---------------------------------
# file : D:/exec/wsgi_api/api_test_1/api_test_1.py    
#---------------------------------
from flask import Flask, jsonify,render_template, request, make_response
import numpy
app = Flask(__name__)
@app.route('/')
def home():
    resp = make_response("hello from 1", 200)
    resp.headers['Content-Type'] = 'charset=utf-8'
    return resp
#---------------------------------        

#---------------------------------
# file : D:/exec/wsgi_api/api_test_2/api_test_2.py    
#---------------------------------
from flask import Flask, jsonify,render_template, request, make_response
import numpy
app = Flask(__name__)    
@app.route('/')
def home():
    resp = make_response("hello from 2", 200)
    resp.headers['Content-Type'] = 'charset=utf-8'
    return resp
if __name__ == '__main__':
    app.run(host='127.0.0.1', port=36000)
#---------------------------------

У меня есть два файла wsgi в appache httpdocs

#---------------------------------
# file : D:/exec/Apache24/htdocs/wsgi/api_test_1.wsgi
#---------------------------------
import sys 
sys.path.append('D:/exec/wsgi_api/api_test_1/') 
from api_test_1 import app as application
#---------------------------------


#---------------------------------
# file : D:/exec/Apache24/htdocs/wsgi/api_test_2.wsgi
#---------------------------------
import sys 
sys.path.append('D:/exec/wsgi_api/api_test_1/') 
from api_test_1 import app as application
#---------------------------------


#---------------------------------
In D:/exec/Apache24/conf/httpd.conf i add the line
#---------------------------------
WSGIScriptAlias /api_test_1 "D:/exec/Apache24/htdocs/wsgi/api_test_1.wsgi"
WSGIScriptAlias /api_test_2 "D:/exec/Apache24/htdocs/wsgi/api_test_2.wsgi"
#---------------------------------

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

У меня была похожая проблема в проекте.В моем случае мне пришлось добавить WSGIApplicationGroup %{GLOBAL} в файл .conf моего сайта.

Это документация, в которой я нашел информацию:
https://modwsgi.readthedocs.io/en/develop/user-guides/checking-your-installation.html#sub-interpreter-being-used

0 голосов
/ 13 февраля 2019

Спасибо за ваш ответ, он работает.

Я обсуждал список рассылки mod_wsgi и получил тот же ответ. Объяснение: numpy не работает в субинтерпретаторах Python, так как модули расширения C не работаютРеализуйте правильно, чтобы позволить это, поэтому для mod_wsgi вы можете использовать numpy только в контексте основного интерпретатора, что вызвано директивой 'WSGIApplicationGroup% {GLOBAL}'

Это связано с предметом https://github.com/numpy/numpy/issues/3961

Так что спасибо всем, кто помог мне, особенно Коди Грей и Грэму Дамплтону

С уважением

Alx

0 голосов
/ 05 февраля 2019

Попробуйте добавить это в файл конфигурации WSGI:

single-interpreter = true
...