我有一個帶有用戶身份驗證的 Flask 應用程式。它在 venv 中運行時作業正常,但是一旦我將它部署為谷歌云應用程式,它就會開始隨機注銷用戶,有時可能是幾分鐘,有時是在第一個請求中。
這是我的應用程式最核心的部分,我相信錯誤一定是在這里或在 App Engine 配置中。
db=SQLAlchemy()
def create_app():
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(12)
app.config['SQLALCHEMY_DATABASE_URI'] = "my_db_uri"
db.init_app(app)
from .views import views
from .auth import auth
app.register_blueprint(views, url_prefix='/')
app.register_blueprint(auth, url_prefix='/')
from .models import User
login_manager = LoginManager(app)
login_manager.login_view = 'auth.login'
login_manager.init_app(app)
@login_manager.user_loader
def load_user(id):
return User.query.get(int(id))
return app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
uj5u.com熱心網友回復:
我正在使用 os.urandom() 在設定檔案中生成隨機密鑰。
當我將其更改為字串時,問題就解決了。
我猜問題是 App Engine 正在運行多個實體并且不時獲得不同的密鑰,這使得會話 cookie 無效并因此清除了 cookie 內容。
uj5u.com熱心網友回復:
此鏈接應向您展示如何在生產環境中設定環境變數。https://dev.to/sasicodes/flask-and-env-22am
我認為您缺少os.getenv()可以通過dotenv使用安裝模塊pip install python-dotenv并將其匯入config.py檔案或帶有應用程式引擎配置的檔案中的檔案來找到的內容。
你可以這樣使用 os.getenv
`
from dotenv import load_dotenv
load_dotenv()
db=SQLAlchemy()
def create_app():
app = Flask(__name__)
app.config['SECRET_KEY'] = os.getenv("my_secret_key")
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv("my_db_uri")
db.init_app(app)
from .views import views
from .auth import auth
app.register_blueprint(views, url_prefix='/')
app.register_blueprint(auth, url_prefix='/')
from .models import User
login_manager = LoginManager(app)
login_manager.login_view = 'auth.login'
login_manager.init_app(app)
@login_manager.user_loader
def load_user(id):
return User.query.get(int(id))
return app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
`
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/512612.html
標籤:Google Cloud Collective python-3.x烧瓶谷歌应用引擎烧瓶登录谷歌应用引擎 python
