首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合使用Python Flask-restful和mod-wsgi

结合使用Python Flask-restful和mod-wsgi
EN

Stack Overflow用户
提问于 2016-04-21 16:47:52
回答 1查看 1.4K关注 0票数 0

我正在尝试在Apache 2.2中使用mod-wsgi

我有以下目录结构:

代码语言:javascript
复制
scheduling-algos
-lib
-common
 -config
  -config.json
resources
-Optimization.py
optimization.wsgi
optimization_app.py

我的optimization_app.py如下:

代码语言:javascript
复制
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代码如下所示:

代码语言:javascript
复制
class OptimizationAlgo(Resource):
    def post(self):
       return "success"

当我向url http://<host>:5000/instances发出一个POST请求时,它就像预期的那样工作。我想用WSGI来做这件事。我已经在Apache2.2上安装了mod-wsgi

我的optimization.wsgi文件如下所示

代码语言:javascript
复制
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的正确方式。

EN

回答 1

Stack Overflow用户

发布于 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文档,它可能使用的模式是:

代码语言:javascript
复制
# 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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36764390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档