2017-01-03 1 views
2

필자는 일부 데이터를 분석하고 그 데이터를 기반으로 그래프를 그리는 플라스크 애플리케이션을 사용합니다. 그러나 지금까지 필자는 내 index.py 파일의 그래프 분석 및 그리기를 수행했습니다. 이것은 브라우저에서 "새로 고침"을 수행 할 때마다 전체 분석을 다시 실행하고 그래프를 그릴 때마다 매우 좋지 않습니다. 다음과 같이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 모듈에 내 데이터 분석을 이동하는 생각 그것을 새로 고침 할 때마다. 내가 겪은 장애물은 실제로 내 __init__.py 모듈에서 내 views.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 

이 일을 다른 어쩌면 더 적절한 방법이 있나요 :

나는 다음을 시도했습니다?

편집 : 나는 그것이 모듈 (data_analysis.py)하는 내 모든 데이터 분석을 수행하고를 작성하여 작업 얻을 관리했습니다

.

이제
from app import data_analysis 

은 내가 할 수있는 :

GPSVALUES = data_analysis.VALUES 
#do something with the values.. 

그것은 그러나에 보인다 이것은 또한 내 __init__.py에 내 데이터 분석을 제거하고 난 지금 대신 view.py 내에서 다음을 가지고 있음을 의미 하는가 스크립트를 두 번 실행하십시오. 처음에 내 run.py의 시작. 첫 번째 요청이에 도착하면 다시 그것은 run.py 시작에서만 스크립트를 실행하는 것 같습니다. 페이지가 새로 고쳐지면 처음부터 원했던 스크립트를 다시 실행하지 않습니다. 그러므로 나는 내가 다른 솔루션에서 제공하지 않는 한이 솔루션과 함께 갈거야 생각합니다.

+0

귀하의 전제는 결함이있다. '__init__'에 코드를 두는 것은 단지 한번만 실행된다는 것을 의미합니다. 당신은 views.py에서 모듈 수준으로두면 같은 효과를 얻을 수 있습니다. –

+0

내 views.py와 동일한 폴더 수준에서 데이터 분석을위한 보조 모듈을 만들려면 어딘가에 실행해야합니다. 내가 내 views.py에서 그것을 실행한다면, 그것은 내 문제를 해결하지 못한다. – Zeliax

+0

모듈 수준에서 실행하면 가능합니다. –

답변

1

(내가 좀 더 테스트를 완료 한 즉시 답변을 추가합니다)

import __init__ 
VALUES = __init__.VALUES 

from app import app, models, __init__ 
시도 범위에없는 경우 app에서 가져올 수 없기 때문에

이 실패합니다.

from __init__ import VALUES 

VAULES은 모듈 변수/변수가 아니기 때문에 실패합니다.

import VALUES 

은 제대로 작동하지 않으므로 ... VALUES 모듈이 없습니다.

+0

슬프게도 작동하지 않는다. 나는 ImportError를 얻는다 : '__init __'이라는 모듈이 ' – Zeliax

1

봅니다,

from app import VALUES 

이 작동하지 않을 수 있습니다.

당신이 당신의 응용 프로그램에서 한 번만 데이터 분석을이 플라스크 장식에 읽기를 부여하려면

,

+0

'앱 가져 오기 VALUES'에서 작동하지 않는 것 같습니다. 이 두 개의 데코레이터를 어떻게 사용 하느냐에 대해서는 조사를 해봤지만 실제로 예제를 찾을 수는 없습니다. – Zeliax

+0

'import'에 어떤 에러가 있습니까? 그리고 그 데코레이터에 대해서는 함수 선언 위에'@ app.before_first_request'를 추가하십시오. 이를 추가하면 응용 프로그램에 제공되는 첫 번째 요청을 처리하기 전에 함수를 한 번 호출합니다. 이와 같이 꾸며진 함수는 아무 것도 반환 할 수 없습니다. – franklinsijo

+0

'ImportError : 이름 'GPSVALUES'을 가져올 수 없습니다 (여러 유형의 값을 사용하여 이름을 변경했습니다). – Zeliax

관련 문제