AttributeError:“Flask”对象在 Flask 3.x 中没有属性“before_first_request”

问题描述 投票:0回答:1

我试图在 Flask 应用程序运行时运行 init 函数。 这是

server.py

from .parser import Parser
app = Flask(config().get("FLASK_APP"))

parser = None

@app.before_first_request
def init():
  parser = Parser()

这是

wsgi.py


import logging
from src.utils.config import config

host = config().get("FLASK_HOST")
port = config().get("FLASK_PORT")
env = config().get("FLASK_ENV")
is_dev = env == "dev"
logging.basicConfig(
  format='[%(asctime)s][%(levelname)s][%(message)s]',
  level=logging.INFO if is_dev else logging.WARNING,
  datefmt='%Y-%m-%d %H:%M:%S'
)

from src.api.server import app
if __name__ == '__main__':
  app.run(
    host=host, 
    port=port,
    debug=is_dev,
    threaded=True 
  )

我收到错误

AttributeError: 'Flask' object has no attribute 'before_first_request'
。 当我像这样运行
server.py
时:

from .parser import Parser
app = Flask(config().get("FLASK_APP"))

parser = Parser()

解析器运行两次。

我正在使用 Flask 3.0.0,因为我发现这个装饰器已被弃用。 Flask 3.0.0版本还有其他解决方案吗?

我检查了 Flask 文档,但没有找到

before_first_request
装饰器的任何替代品。

python flask wsgi
1个回答
0
投票

突然我找到了解决办法。我看到的问题出在烧瓶的重新加载器中,所以我只是在 app.run bootstrap 函数中禁用了此功能。 这是肖恩回答的详细信息https://stackoverflow.com/a/9476701/11988818 目前,我的应用程序运行一次。并且不再需要

before_first_request
装饰器了。

© www.soinside.com 2019 - 2024. All rights reserved.