好的,我已经完成研究并尝试并测试了以下内容
但是,那里提供的解决方案都没有起作用,而且我不明白为什么删除常量会起作用?基本上是同一回事。
这是我的代码,
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也无法帮助我。在这里可以做什么?
答案 0 :(得分:0)
弄清楚了。
在Amazon 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和应用程序的其他部分正常工作!