我正在尝试在Apache 2.2中使用mod-wsgi
我有以下目录结构:
scheduling-algos
-lib
-common
-config
-config.json
resources
-Optimization.py
optimization.wsgi
optimization_app.py我的optimization_app.py如下:
from flask import Flask
from flask_restful import Api
from resources.Optimization import OptimizationAlgo
def optimizeInstances():
optimization_app = Flask(__name__)
api = Api(optimization_app)
api.add_resource(OptimizationAlgo, '/instances')
if __name__ == '__main__':
optimizeInstances()
optimization_app.run(host='0.0.0.0', debug=True)我的Optimization.py代码如下所示:
class OptimizationAlgo(Resource):
def post(self):
return "success"当我向url http://<host>:5000/instances发出一个POST请求时,它就像预期的那样工作。我想用WSGI来做这件事。我已经在Apache2.2上安装了mod-wsgi。
我的optimization.wsgi文件如下所示
import sys
sys.path.insert(0, '<path to app>')
from optimization_app import optimizeInstances as application我得到以下错误:TypeError: optimizeInstances() takes no arguments (2 given)。显然,这不是使用WSGI的正确方式。使用WSGI的正确方法是什么?显然,这不是使用WSGI的正确方式。
发布于 2016-04-21 18:08:15
正如我在你的另一个问题中告诉你的,你也许应该回去再读一遍烧瓶documentation。这样你才能正确地学习和理解。忽视别人的建议并期望别人告诉你,这只会惹恼别人,他们就会停止帮助你。我会建议你注意这一点,而不是留下一系列单独的问题,希望有人能为你解决问题。
也就是说,我看不出您给出的代码怎么能像您所说的那样与Flask开发服务器一起工作。问题是optimization_app = Flask(__name__)在函数范围内设置了一个局部变量。它没有设置全局变量。因此,optimization_app.run(host='0.0.0.0', debug=True)的调用应该会失败,并返回一个LookupError,因为它看不到名为optimization_app的变量。甚至不确定你为什么要为这个函数而烦恼。
如果你去看Flask文档,它可能使用的模式是:
# optimisation.wsgi
import sys
sys.path.insert(0, '<path to app>')
# We alias 'app' to 'application' here as mod_wsgi expects it to be called 'application'.
from optimization_app import app as application
# optimization_app.py
from flask import Flask
from flask_restful import Api
from resources.Optimization import OptimizationAlgo
app = Flask(__name__)
api = Api(app)
api.add_resource(OptimizationAlgo, '/instances')
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)https://stackoverflow.com/questions/36764390
复制相似问题