在瓶

2015-11-08 17 views
0
主要app.py之前運行單個.py文件一旦

是否可以運行python 的.py文件或段只有一次在瓶

進行必要的-heavily數據involved-計算,節省到一個tmp文件,

然後讓主app.py文件使用該tmp文件作爲數據源,而不必在每次有人在Flask中發出請求時都要重做計算?

+0

是的。你遇到什麼問題試圖做到這一點? – ppperry

+0

我正在使用python-recsys,每次發出請求時,SVD矩陣似乎都會重新計算,導致Heroku發生超時錯誤 – George

回答

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只調用一次。

0

根據計算類型和流量的大小,您可能希望使用像Celery這樣的後臺工作/作業隊列。有關HTTP請求的想法是希望讓請求/響應生命週期儘可能快速和輕鬆。如果您正在爲每個請求執行大量數據計算(作爲此週期的一部分),則會降低用戶速度,並且不能充分利用HTTP進程。

查看此文章從Heroku on Celery