static
폴더의 Pickle
파일에서 가져온 데이터가있는 html 테이블을 채우는 플라스크 앱이 있습니다. Pickle 파일을 1 분 간격으로 업데이트하는 외부 응용 프로그램이 있습니다.플라스크 웹 앱의 데이터가 업데이트되지 않습니다. [Python]
views.py
파일은 Pickle 파일을 열고 데이터를로드 한 다음 html 템플릿으로 보냅니다.
페이지를 새로 고침 한 횟수와 상관없이 데이터가 처음 터미널에서 앱을 시작했을 때와 동일하지만 앱이 실행 중입니다.
screen
인스턴스에서 uwsgi --socket 127.0.0.1:3031 --wsgi-file run_web.py --callable app --processes 4 --threads 2 --stats 127.0.0.1:9191
을 통해 시작합니다.
데이터를 올바르게 새로 고치려면 어떻게해야합니까?
내가 요청은 플라스크 서버에 도달 않았다 ... 플라스 크 응용 프로그램
views.py 모두의
import all the things
with open('/home/metheuser/webapps/ers_portal/app/static/' + ec.dd_filename) as f:
data = pickle.load(f)
column_names = data.pop('__column_names__')
column_names.insert(2, 'Screen Viewer')
column_names.insert(3, 'Site Page')
sites = data.keys()
for sitename in data:
data[sitename].insert(2, ec.unit_roster[sitename]['ip_address'])
data[sitename].insert(3, 'doesn\'tgoanywhereyet...')
dbt = da.Database_Authenticator(admin=False)
#************************************************
lm = LoginManager()
lm.init_app(app)
lm.login_view = 'login'
def authenticate(un, typed_pw, remember=False):
"""login with database"""
my_user = dbt.authenticate_user(un, typed_pw)
if my_user: # user is authenticated
return my_user
else:
return False
@lm.user_loader
def load_user(userid):
print 'user id:',userid
try:
return dbt.get_user_by_id(userid)
except AttributeError:
return None
@app.before_request
def before_request():
g.user = current_user
@app.route('/')
@app.route('/index')
def index():
return render_template("index.html",
title = 'Main',)
@app.route('/login', methods = ['GET', 'POST'])
def login():
if g.user is not None:
if g.user.is_authenticated():
return redirect(request.args.get('next') or 'index')
form = LoginForm()
if form.validate_on_submit():
authed_user = authenticate(form.username.data, form.typed_pw.data, form.remember_me.data)
if authed_user:
authed_user.authenticated = True
u = login_user(authed_user, form.remember_me.data)
return redirect(request.args.get('next') or 'index')
return render_template('login.html',
title = 'Sign In',
form = form)
@app.route('/logout')
def logout():
logout_user()
return redirect('index')
@app.route('/my_table')
@login_required
def my_table():
print 'trying to access data table...'
return render_template("my_table.html",
title = "Rundata Viewer",
sts = sites,
cn = column_names,
data = data) # dictionary of data
내 생각 엔하지만'views.py' 파일을 보지 않고 서버가 아니라 각 요청시보다 시작할 때 당신은'Pickle' 파일을로드 할 것입니다 확실하게 알기가 어렵습니다. – dirn
@dirn : 죄송합니다. 뷰 파일이 매우 중요하다고 생각합니다. 위에 포함되어 있습니다 –
아래의 @ Daniel의 대답을 참조하십시오. 프로세스가 시작될 때 파일을로드하지만 요청이있을 때마다로드하려고합니다. – dirn