私はいくつかのデータの分析を行い、そのデータに基づいてグラフを描くフラスコアプリケーションを持っています。しかし今までは、私のindex.pyファイルのグラフの解析と描画をindexメソッドで行ってきました。これはブラウザで「リフレッシュ」を実行するたびに解析全体をやり直し、グラフ全体を描画するので、あまり良くありません。views.pyの__init__.pyから変数をインポートすることはできますか?
次のように私のプロジェクト構造は次のとおりです。
Data Analysis/
- app/
- static/
- templates/
- base.html
- index.html
- __init__.py
- models.py
- views.py
- venv/
- run.py
- config.py
私が代わりに再実行するのは、アプリケーションが実行されると、これは必要なデータのみを計算することになると私の__init__.pyモジュールに自分のデータ分析を移動すると考えますリフレッシュする度に私が実行したハードルは、実際に私のviews.pyモジュールに必要なデータを__init__.pyモジュールからインポートすることです。
これはどのように行われますか?
私は次のことを試してみた:
__init__.py
from flask import Flask, url_for, render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
def do_data_analysis():
#... lots of calculations
return data
VALUES = do_data_analysis()
views.py
from app import app, models, __init__ #does not work
from __init__ import VALUES #does not work
import VALUES #does not work
from app import VALUES # does not work
VALUES = __init__.VALUES #does not work
は、これを行うための別の、多分より適切な方法はありますか?
EDIT:
私はすべての私のデータ分析を行っておりますする(data_analysis.py
)それはモジュールを作成することで作業を取得するために管理してきました。
from app import data_analysis
今、私にできること:
GPSVALUES = data_analysis.VALUES
#do something with the values..
それはしかしように見えるんまた、これは私のに来ると再び。 __init__.py
に私は私のデータ分析を削除したと私は今、代わりに私のview.py
に次のように持っていることを意味しスクリプトを2回実行してください。最初に私のrun.py
のスタートアップ時。そして、最初のリクエストがrun.py
の起動時にのみスクリプトが実行されているようです。また、ページが更新されても、最初に欲しかったスクリプトは再実行されません。そこで私は、私は他のソリューションが登場していない限り、このソリューションで行くつもりだと思います。
あなたの前提は欠陥があります。 '__init__'にはコードが1回だけ実行されるということは何もありません。 views.pyでモジュールレベルにすることで同じ効果を得ることができます。 –
私がviews.pyと同じフォルダレベルでデータ分析用のセカンダリモジュールを作成する場合は、どこかで実行する必要があります。私がviews.pyでそれを実行するのであれば、私の問題は本当に解決されません。 – Zeliax
モジュールレベルで実行している場合はあります。 –