2
votes

Importer un conflit lors de l'exécution de l'application flask avec apache mod_wsgi sous Windows

Je vous autorise à vous poser des questions sur un problème que j'ai avec l'hébergement de l'application flask avec votre portage de mod_wsgi sur windows

J'ai deux applications flask et une seule peut être vivante à la même époque en raison d'un conflit d'importation

ie: Si une demande demande 1 j'ai une réponse Ensuite, si je demande l'application 2, j'ai une erreur de serveur interne avec une erreur dans le journal ... Ensuite, si je redémarre apache et que je demande l'application 2, j'ai une réponse mais si je demande l'application 1, j'ai la même erreur de serveur interne Si je commente une importation comme numpy les deux applications peuvent être actives en même temps

Toute aide serait appréciée si vous avez une idée ou un lien ou une réponse à propos de ce problème?

Ma l'installation est décrite ci-dessous

Merci d'avance pour les temps de visite et vos travaux

Alexandre

LOG de l'erreur
mod_wsgi (pid = 4936): Impossible d'exécuter le fichier de script Python 'D: /exec/Apache24/htdocs/wsgi/api_test_2.wsgi'.
mod_wsgi (pid = 4936): Une exception s'est produite lors du traitement du script WSGI 'D: /exec/Apache24/htdocs/wsgi/api_test_2.wsgi'.
Traceback (dernier appel le plus récent):
Fichier "D: /exec/Apache24/htdocs/wsgi/api_test_2.wsgi", ligne 3, dans
depuis l'application d'importation api_test_2 en tant qu'application
Fichier "D: / exec / wsgi_api / api_test_2 \ api_test_2.py", ligne 2, dans
importer numpy
Fichier "c: \ python \ python36 \ lib \ site-packages \ numpy \ __ init__.py", ligne 142, dans
de . importer le noyau
Fichier "c: \ python \ python36 \ lib \ site-packages \ numpy \ core \ __ init__.py", ligne 16, dans
de . importer multiarray
Fichier "c: \ python \ python36 \ lib \ site-packages \ numpy \ core \ multiarray.py", ligne 12, dans
de . importation remplace
Fichier "c: \ python \ python36 \ lib \ site-packages \ numpy \ core \ overrides.py", ligne 46, dans
"" ")
RuntimeError: la méthode implementation_array_function a déjà une docstring

#---------------------------------
# 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"
#---------------------------------

J'ai ces deux fichiers wsgi dans appache httpdocs

#---------------------------------
# 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)
#---------------------------------


0 commentaires

4 Réponses :


0
votes

Essayez de mettre ceci dans votre fichier de configuration WSGI:

single-interpreter = true


1 commentaires

Le problème est le même sous Linux.



1
votes

J'ai eu un problème similaire dans un projet. Dans mon cas, j'ai dû ajouter WSGIApplicationGroup% {GLOBAL} dans le fichier .conf de mon site.

Voici la documentation où j'ai trouvé les informations:
https: // modwsgi.readthedocs.io/en/develop/user-guides/checking-your-installation.html#sub-interpreter-being-used


3 commentaires

Quel fichier faites-vous référence exactement par .conf pouvez-vous s'il vous plaît fournir le chemin complet. Merci!


Et si vous vouliez dire httpd.conf où exactement dois-je l'ajouter, de quelle section je veux dire.


@lorenzo, je suis resté coincé ici pendant 3 jours. Merci beaucoup.



1
votes

J'ai eu une discussion sur la liste de diffusion mod_wsgi et j'ai eu la même réponse L'explication est que numpy ne fonctionne pas dans les sous-interprètes Python car les modules d'extension C ne sont pas implémentés correctement pour permettre cela, donc pour mod_wsgi vous ne pouvez utiliser numpy dans le contexte de l'interpréteur principal, forcé par la directive 'WSGIApplicationGroup% {GLOBAL}'

Ceci est lié au sujet https://github.com/numpy/numpy/issues / 3961


0 commentaires

0
votes

Cela fonctionne pour moi

J'ajoute WSGIApplicationGroup% {GLOBAL} dans le fichier de configuration apache qui est disponible dans le dossier activé pour le site.


0 commentaires