【问题标题】:Get 404 when running flask restplus app on amazon ec2在亚马逊 ec2 上运行烧瓶 restplus 应用程序时得到 404
【发布时间】:2019-01-12 20:58:01
【问题描述】:

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

Related Question

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

这是我的代码,

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 的命名空间,用于功能目的。

我希望我的招摇用户界面在 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.7 flask amazon-ec2 flask-restful flask-restplus


    【解决方案1】:

    想通了。

    在亚马逊 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"。

    这应该可以让你的 Swagger UI 和应用程序的其他部分正常工作!

    【讨论】:

      猜你喜欢
      • 2016-08-11
      • 2017-11-30
      • 2013-04-02
      • 2014-02-09
      • 2013-05-02
      • 2014-02-22
      • 1970-01-01
      • 2012-10-28
      • 2018-03-27
      相关资源
      最近更新 更多