当前位置: 首页 > 面试题库 >

在flask/gunicorn中的哪个位置初始化应用程序

严高峻
2023-03-14
问题内容

我正在使用Flask / Gunicorn运行Web应用程序,并且对生命周期管理有疑问。我在Java世界中拥有关于servlet的更多经验。

我正在为服务创建一个宁静的接口。该服务始终在服务器上运行,并与一组子服务器进行通信和控制。在Java中,将main()通过侦听器和servlet初始化方法来创建和初始化我的服务(例如,传统上在中找到的设置)。

Flask中的等效设置和配置在哪里?我正在考虑诸如创建数据库连接池,向子服务器发送问候消息,将持久性系统状态重置为初始值等任务。

可以用before_first_requestFlask 的方法吗?

基于@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方法还可以处理所有这些项目。但是你会在第一次请求而不是在服务器启动时延迟设置。



 类似资料:
  • 我有一个Flask应用程序在Apache下使用mod_wsgi运行。该应用程序需要做一些初始化,包括在接收任何请求之前设置一些需要在请求处理程序中访问的顶级变量。目前,此初始化代码只是请求处理方法之前的中的顶级语句: 应用程序的wsgi文件如下所示: 我注意到,在收到第一个请求之前,不会调用初始化代码。在收到任何请求之前,当mod_wsgi加载应用程序时,如何执行初始化代码?

  • 有一个简单的应用程序,可以获取。我想在应用程序初始化之前获取gps位置。在我看来,GPS位置是异步更新的,我确实会在后台加载应用程序屏幕,同时弹出一个问题:“允许应用程序使用您当前的位置?” 那么,我如何进行回调(抱歉,来自Ruby/JS后台)以等待获得当前位置。 代码: in

  • 问题内容: 我正在尝试使用redis-store作为我的Rails 3 cache_store。我也有一个initializer / app_config.rb,它加载一个yaml文件进行配置设置。在我的初始值设定项/redis.rb中,我有: 但是,这似乎不起作用。如果我做: 在我的Rails控制台中,我可以清楚地看到它正在使用 作为缓存存储而不是redis存储。但是,如果我像这样在我的appl

  • 本文向大家介绍iOS 用位置常数初始化,包括了iOS 用位置常数初始化的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 容器内部的应用程序无法从外部访问,即如果我执行docker容器并执行 它可以正常工作,但不能在我的计算机上的浏览器上出现错误:无法访问此站点 我的Dockerfile: UPON以这种方式执行docker: 我得到以下输出: 因此,您可以看到我正在将容器的端口5000映射到计算机的端口5000,但是localhost:5000无法正常工作 因此,我尝试了所有相同的事情,但在Flask的

  • 问题内容: 我一直在为我的应用程序使用nginx / gunicorn和Flask开发新的开发平台。 运维方面,一切正常-我遇到的问题是调试Flask层。当我的代码中有错误时,我只是直接向浏览器返回了500错误,而控制台或日志中没有任何显示。 我已经尝试了许多不同的配置/选项。我想我肯定缺少明显的东西。 我的gunicorn.conf: 乏味的一些Flask代码示例-testserver.py: