我目前在 Amazon 的 EB2 服務上部署 Flask 應用程式時遇到問題。Flask 應用程式在本地運行。然而,當它被部署時,它只對第一個點擊鏈接的人有效。之后它拋出以下錯誤:
內部服務器錯誤 服務器遇到內部錯誤,無法完成您的請求。服務器過載或應用程式中存在錯誤。
它拋出的錯誤與 Flask 會話有關——從一個站點路由到另一個站點后它變為空。我還注意到before_first_request下面詳述的函式只運行一次,對于第一個用戶,再也不會運行——這更令人困惑。
這是最小的例子:
from flask import Flask, render_template, request, session, url_for
application = Flask(__name__)
application.secret_key = "mysecretkey"
@application.before_first_request
def before_first_request():
""" these commands are run before the first request"""
# setup logging
application.logger.setLevel(logging.INFO)
application.logger.info('starting up Flask')
# clear session
session.clear()
# load in PID
session['pid'] = 123
# add parameters to the session
params = dict()
params['parameter'] = 0
session['params'] = params
application.logger.info(session) # it is printing the session as expected
return 'OK'
@application.route('/')
def main():
""" landing page """
application.logger.info(session) # empty
application.logger.info(application.secret_key) # as expected
params, results = session.pop('params'), session.pop('results') # throws out the error
return render_template('empty_template.jinja', args = session)
我想知道是否有人知道如何解決這個問題?
uj5u.com熱心網友回復:
我設法解決了它。
錯誤是@before_first_request包裝器實際上只在第一次向應用程式發出請求之前運行一次。因此,會話實際上只創建并填充了一次。
before_first_request我通過在函式頂部添加對函式的呼叫來修復該錯誤main。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/534747.html
