【问题标题】:Running a single .py file once before main app.py in Flask在 Flask 中的 main app.py 之前运行单个 .py 文件
【发布时间】:2015-11-08 19:57:51
【问题描述】:

是否可以运行一个.py文件或python段只运行一次

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

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

【问题讨论】:

  • 是的。尝试执行此操作时遇到什么问题?
  • 我正在使用 python-recsys,每次发出请求时,SVD 矩阵似乎都在重新计算,导致 Heroku 出现超时错误

标签: python flask recommendation-engine


【解决方案1】:

你可以试试这个: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 只调用了一次。

【讨论】:

    【解决方案2】:

    根据计算类型和流量,您可能希望使用像 Celery 这样的后台工作/作业队列。 HTTP 请求的想法是您希望在请求/响应生命周期中尽可能快速和轻便地保持它们。如果您在此周期中为每个请求进行大量数据计算,那么您会减慢用户的速度并且没有很好地利用 HTTP 进程。

    Heroku on Celery查看这篇文章

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-02
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      相关资源
      最近更新 更多