在 amazon ec2 上 运行 flask restplus 应用程序时获取 404

Get 404 when running flask restplus app on amazon ec2

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

但是,none 提供的解决方案有效,我不明白为什么删除常量会有效?基本上是一样的。

这是我的代码,

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

现在如果你建议我在蓝图中设置一个'/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 也没有帮助我。这里可以做什么?

想通了。

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

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