項目使用Flask-SQLAlchemy時出現了問題,花了很長時間,終于解決了,此處記錄一下。
服務部署好后,訪問鏈接經常出現500現象,使得訪問時經常出錯。解決問題的方法很簡單,在app啟動時加一個參數即可如下所示:
app = Flask(__name__)app.run(threaded=True)threaded: 多線程支持,默認不開啟
sessionmaker()被調用時會產生一個session工廠類,在使用時可以新建一個session,如下所示:
Session = sessionmaker(bind=engine)session = Session()session有多種生命周期管理方式,項目開始時使用的最長模式,即全程只用一個session,由于session不是線程安全的,所以在使用的時候會出現數據庫gone away的現象。 解決的方法是每次需要操作數據庫時新建一個session,并且在sessionmaker的參數中加上autocommit=True。 會話會在commit()后自動過期,所以添加autocommit=True后就不必調用clear() 或 close(), 對象會自動與當前事務同步。
|
新聞熱點
疑難解答