flask项目运行时404错误
部署项目时遇到404找不到资源的问题 运行项目时项目可以正常启动,但是会提示UserWarning,如下:UserWarning: Current server name ‘172.29.60.11:5000’ doesn’t match configured server name ‘0.0.0.0:5000’
UserWarning: Current server name ‘172.29.60.11:5000’ doesn’t match configured server name ‘0.0.0.0:5000’
即:当前服务器名称“172.29.60.11:5000”与配置的服务器名称“0.0.0.0:5000”不匹配
这种情况主要发生在使用了config.from_object(xx)来配置加载属性
如下:
class AppConfig():
ENV = "production" # 生态环境 development:开发者模式
DEBUG = True
SERVER_NAME = "0.0.0.0:5000"
api = Flask(__name__)
def get_app():
api.config,from_object(AppConfig)
api.test_request_context()
# 注册蓝图
import admin_api
api.register_blueprint(admin_api.blue)
__main__ = "__name__"
app = get_app()
app.run()
如果是通过Falsk提供的config.from_object(xx)方法来配置webApi的地址,则SERVER_NAME尽量别用localhost或者0.0.0.0,否则会发生上述提到的服务器名称与配置名称不符合的错误。
在flask服务器运行时,配置服务器地址别用“0.0.0.0” 代替 服务器IP地址,将“0.0.0.0”改为当前服务器地址即可解决该问题,如下:
class AppConfig():
ENV = "production" # 生态环境 development:开发者模式
DEBUG = True
SERVER_NAME = "192.168.1.1:5000"
当然也可以不用config.from_object(xx)方法来配置webapi的地址,也可以解决这个问题
api = Flask(__name__)
def get_app():
# api.config,from_object(AppConfig)
api.test_request_context()
# 注册蓝图
import admin_api
api.register_blueprint(admin_api.blue)
__main__ = "__name__"
app = get_app()
app.run(host="0.0.0.0", port=5000, debug=None, load_dotenv=True)
这是从配置方法上解决问题,即run的时候指定host,port