我正在使用Flask / Gunicorn运行Web应用程序,并且对生命周期管理有疑问。我在Java世界中拥有关于servlet的更多经验。
我正在为服务创建一个宁静的接口。该服务始终在服务器上运行,并与一组子服务器进行通信和控制。在Java中,将main()通过侦听器和servlet初始化方法来创建和初始化我的服务(例如,传统上在中找到的设置)。
main()
Flask中的等效设置和配置在哪里?我正在考虑诸如创建数据库连接池,向子服务器发送问候消息,将持久性系统状态重置为初始值等任务。
可以用before_first_requestFlask 的方法吗?
before_first_requestFlask
基于@Pyrce的评论,我想我可以创建一个main.py:
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方法还可以处理所有这些项目。但是你会在第一次请求而不是在服务器启动时延迟设置。
before_first_request