我正在使用 Flask/Gunicorn 运行 Web 应用程序并且对生命周期管理有疑问。我在使用 servlet 的 Java 世界中有更多经验。
我正在为服务创建一个 Restful 接口(interface)。该服务始终运行在服务器上,并与一组子服务器进行通信和控制。在 Java 中,我的服务将通过监听器和 servlet 初始化方法创建和初始化(例如,传统上在 main()
中找到的设置)。
等效的设置和配置在 Flask 中的什么地方?我正在考虑创建数据库连接池、向子服务器发送问候消息、将持久化系统状态重置为初始值等任务。
这会出现在 Flask 的 before_first_request
方法中吗?
根据@Pyrce 的评论,我认为我可以创建一个 main.py
:
app = Flask(your_app_name)
#initialization code goes here
然后运行:
>gunicorn main:app
最佳答案
您仍然可以使用相同的 main() 方法范例。请参阅下面的入门代码:
app = Flask(your_app_name) # Needs defining at file global scope for thread-local sharing
def setup_app(app):
# All your initialization code
setup_app(app)
if __name__ == '__main__':
app.run(host=my_dev_host, port=my_dev_port, etc='...')
before_first_request
方法也可以处理所有这些项目。但是您会在第一次请求时而不是在服务器启动时延迟设置。
关于python - 在 flask/gunicorn 中初始化应用程序的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22260127/