运行 在 Flask 中 app.py 之前的单个 .py 文件

Running a single .py file once before main app.py in Flask

是否可以运行 python 的 .py 文件或片段 一次

进行必要的 - 涉及大量数据 - 计算,保存到 tmp 文件,

然后让主 app.py 文件使用该 tmp 文件作为数据源,而不必每次有人在 Flask 中发出请求时都重新计算?

你可以试试这个:before_first_request


我给你看一个简单的例子:

from flask import Flask                                                     

app = Flask(__name__)                                                       


@app.before_first_request                                                   
def do_heavy_work():                                                        
    print("work, work!")                                                    


@app.route('/')                                                             
def index():                                                                
    return 'Hello, world.'                                                  


@app.route('/next')                                                         
def next():                                                                 
    return 'yoo'                                                            


if __name__ == '__main__':                                                  
    app.run(debug=True)

你应该会发现 do_heavy_work 只调用了一次。

根据计算类型和流量,您可能希望使用像 Celery 这样的后台 worker/job 队列。 HTTP 请求的想法是让它们在 request/response 生命周期内尽可能快速和轻便。如果作为此循环的一部分,您正在为每个请求执行大量数据计算,那么您会减慢用户速度并且没有充分利用 HTTP 进程。

查看来自 Heroku on Celery

的这篇文章