首页 > 解决方案 > 在亚马逊 ec2 上运行烧瓶 restplus 应用程序时得到 404

问题描述

好的,我已经完成了研究并尝试并测试了以下内容

相关问题

但是,那里提供的解决方案都不起作用,我不明白为什么删除常量会起作用?基本上是一样的。

这是我的代码,

import logging.config

import os, settings
from flask import Flask, Blueprint
from restplus.api.model.endpoints.servemodel import ns as modelserve
from restplus.api.apiInit import api

app = Flask(__name__)
# BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# logging.config.fileConfig(os.path.join(BASE_DIR, 'utils', 'logger.conf'))
# log = logging.getLogger(__name__)

def configure_app(flask_app):
    flask_app.config['SERVER_NAME'] = settings.FLASK_SERVER_NAME
    flask_app.config['SWAGGER_UI_DOC_EXPANSION'] = settings.RESTPLUS_SWAGGER_UI_DOC_EXPANSION
    flask_app.config['RESTPLUS_VALIDATE'] = settings.RESTPLUS_VALIDATE
    flask_app.config['RESTPLUS_MASK_SWAGGER'] = settings.RESTPLUS_MASK_SWAGGER
    flask_app.config['ERROR_404_HELP'] = settings.RESTPLUS_ERROR_404_HELP

def initialize_app(flask_app):
    configure_app(flask_app)
    blueprint = Blueprint('api', __name__)
    api.init_app(blueprint)
    api.add_namespace(modelserve)
    flask_app.register_blueprint(blueprint)


def main():
    initialize_app(app)
    # log.info('>>>>> Starting development server at http://{}/api/ <<<<<'.format(app.config['SERVER_NAME']))
    app.run(debug=settings.FLASK_DEBUG)


if __name__ == "__main__":
    main()

现在,如果您建议我在 Blueprint 中设置一个“/api”路径,我也尝试过,但没有成功。modelserve 命名空间只是 / 和 /recognize 的命名空间,用于功能目的。

我希望我的招摇 UI 在 0.0.0.0:5000 运行。变量 settings.FLASK_SERVER_NAME 就是这样设置的。控制台所说的只是 404,没有任何解释。

我也尝试过打印 app.url_map 并看到应用程序的所有路由都在应该注册的地方注册。

    Map([<Rule '/swagger.json' (HEAD, OPTIONS, GET) -> api.specs>,
 <Rule '/recognize/' (POST, OPTIONS) -> api.recognize_hand_written_digit_recognizer>,
 <Rule '/recognize/' (POST, OPTIONS) -> api.recognize_hand_written_digit_recognizer_2>,
 <Rule '/' (HEAD, OPTIONS, GET) -> api.doc>,
 <Rule '/' (HEAD, OPTIONS, GET) -> api.root>,
 <Rule '/swaggerui/<filename>' (HEAD, OPTIONS, GET) -> restplus_doc.static>,
 <Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>])

但是仍然大摇大摆的ui不起作用。我不确定问题是什么,设置 debug=True 也没有帮助我。在这里可以做什么?

标签: python-2.7flaskamazon-ec2flask-restfulflask-restplus

解决方案


弄清楚了。

在亚马逊 ec2 上使用 Flask-RESTPlus 时,将服务器的 ip 地址作为主机。因此,例如,如果服务器的 ip 是 ec2-10-221-200-56.us-west-2.compute.amazonaws.com 则将其设置为主机。所以最终设置.FLASK_SERVER_NAME="http://ec2-10-221-200-56.us-west-2.compute.amazonaws.com:5000"。

这应该使您的招摇 UI 和应用程序的其他部分正常工作!


推荐阅读