我正在使用Flask / Gunicorn来运行Web应用程序,并对生命周期管理提出疑问。我在使用servlet的Java世界中有更多的经验。
我正在为服务创建一个安静的界面。该服务始终在服务器上运行,并通过一组子服务器进行通信和控制。在Java中,我的服务将通过监听器和servlet初始化方法创建和初始化(例如传统上在main()
中找到的设置)。
Flask中的等效设置和配置在哪里?我正在考虑创建数据库连接池,向子服务器发送hello消息,将持久系统状态重置为初始值等任务。
这会用于Flask的before_first_request
方法吗?
基于@Pyrce的评论,我想我可以创建一个main.py
:
app = Flask(your_app_name)
#initialization code goes here
然后运行:
>gunicorn main:app
答案 0 :(得分:18)
您仍然可以使用相同的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
方法也可以处理所有这些项目。但是你会在第一次请求而不是服务器启动时延迟设置。