代码之家  ›  专栏  ›  技术社区  ›  Europa

Google Cloud Run上的Python会话自动注销

  •  0
  • Europa  · 技术社区  · 2 年前

    我在Google Cloud Run上运行一个我用Python编写的网站。该站点在Docker镜像中运行,该镜像使用 python:latest 。代码是有效的,但是过了一段时间用户就注销了,我不知道为什么会话不能持续。

    main.py:

    """
    Main
    File: main.py
    Updated: 23.10.2022 Ditlefsen
    """
    import os
    
    import flask
    from flask import request, session
    
    # Flask
    app = flask.Flask(__name__)
    app.secret_key = os.urandom(12)
    
    
    # - Index ------------------------------------------------------------------------------
    @app.route('/', methods=['GET', 'POST'])
    def __index():
    
        # Login user
        if not session.get('logged_in'):
            request_form_global = request.form
    
            inp_username = request_form_global['inp_username']
            inp_password = request_form_global['inp_password']
            
            if inp_username == "hello" and inp_password == "world":
                session['logged_in'] = True
                
    
        if session.get('logged_in'):
            return "Welcome to the website", 200
        else:
            return "Access denied!", 304
    
    
    # - Main ----------------------------------------------------------------------
    def main(function_request: flask.wrappers.Request = None):
        app.run(debug=False, host="0.0.0.0", port=8080)
    
    if __name__ == '__main__':
        main()
    

    Dockerfile:

    # Specify Python
    FROM python:latest
    
    ENV PYTHONDONTWRITEBYTECODE 1
    ENV PYTHONUNBUFFERED 1
    
    # Open port
    EXPOSE 8080
    
    # Add Python script
    RUN mkdir /app
    WORKDIR /app
    COPY . .
    
    
    # Install dependencies
    RUN pip install -r requirements.txt
    
    # Set Pythons path
    ENV PYTHONPATH /app
    
    # Run script
    CMD [ "python", "./main.py" ]
    

    requirements.txt:

    cloud-sql-python-connector
    flask
    flask-cors
    google-cloud-secret-manager
    google
    google-api-python-client
    PyYAML
    psycopg2-binary
    pg8000
    sqlalchemy==1.4.46
    requests
    
    
    
    flask-login
    passlib
    Werkzeug
    

    如何保持用户登录?

    1 回复  |  直到 2 年前
        1
  •  0
  •   S_Crespo    2 年前
    • 如果您在本地测试代码,您的用户是否保持登录状态?
    • 注销前的延迟是多少? 我的猜测是,根据您的订阅和/或参数,您的Google Cloud Run服务会在一段时间后关闭(请参阅配额 here )