2017-06-07 4 views
0

私はフラスコを使ってWebアプリケーションを作成しています.csvファイルをロードする必要があるPythonコードにはいくつかのビットがあります。フラスコでCSVファイルをあらかじめ読み込んでいます

with open('{}/src/public/file.csv'.format(current_app.config['PROJECT_ROOT']), 'r') as f: 
    rows = csv.readlines(f) 

次に、rowsを使用して計算を行います。

私の問題は、ユーザーがリクエストをトリガするたびにこれをやりたくないということです。私はFlaskを起動したときにロードしておき、要求内のPythonコードにrowsがアクセスできるようにしたいと思います。

私の最初の試みは、python関数から取り出してviews.pyファイルの先頭に置くことでしたが、アプリコンテキストエラーが発生しました。

私は後に何を達成するのですか?

NB:スレッド、スタック、コンテキストという用語に慣れていませんが(覚えておきたい)

答えて

2

私はあなたのコード全体を見ていないので、それが助けになるかどうかはわかりません。あなたがフラスコ内でアプリコンテキストの問題を持っている場合でも、通常、あなたはこれを使用する必要があります。

from flask import Flask, current_app 
# All other imports go here 
app = Flask(__name__) 
with app.app_context(): 
    with open('{}/src/public/file.csv'.format(current_app.config['PROJECT_ROOT']), 'r') as f: 
    rows = csv.readlines(f)   
+1

をこのケースでは、アプリケーションのコンテキスト内で 'current_app.config'を使用するのではなく直接app.config''使用するのに十分であろう。 – MrLeeh

+0

これは新しいアプリケーションインスタンスを作成しませんか?なぜそれが悪いのかは分かりませんが、何かが私には間違っていると私に言います。私は最初のアプリケーションインスタンスが作成されたときにそれを行うことについてもっと考えていましたが、私はどのステージでそれを行うのか分かりません。 PSそれは働いた。私は設定ファイルを最初にインポートする余分なステップをやらなければなりませんでした。 –

+1

'app = Flask(__ name __)'はあなたのFlaskアプリケーションの初期化を示すはずです。アプリで 'app.app_context() 'を使って試してみましょう。 – Nurjan

関連する問題