Google 云应用引擎和 Flask 应用程序无限加载

问题描述 投票:0回答:1

我一直在尝试部署一个使用Google云应用程序引擎的Web应用程序。我的应用程序使用 Flask 和 sqlalchemy 连接到 mysql 谷歌云数据库。该网站已创建,但当尝试单击链接时,它只会无限加载。日志没有为我指明任何方向。

目前这是我的 app.yaml 文件

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  operating_system: ubuntu22

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

这是直接从 Gcloud 示例文件复制的。我的 main.py 文件是

from Website import create_app

app = create_app()

if __name__ == '__main__':
    app.run(host="127.0.0.1", port=8080, debug=True)

这是我的 init.py 文件,位于我的网站文件夹中

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
from sqlalchemy import create_engine

db = SQLAlchemy()
DB_NAME = "database.db"


def create_app():
    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'Secret Key'

    PASSWORD = "DB Password"

  

    PUBLIC_IP_ADDRESS = "Ip address of database"
    
      
    
    DBNAME = "Database Name"
    
      
    
    PROJECT_ID = "Project Id"
    
      
    
    INSTANCE_NAME = "Instance Name"
    
      
    
    app.config["SQLALCHEMY_DATABASE_URI"] = f"mysql+mysqldb://root:{PASSWORD}@{PUBLIC_IP_ADDRESS}/{DBNAME}?unix_socket=/cloudsql/{PROJECT_ID}:{INSTANCE_NAME}"
    
      
    
    app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
    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()
    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))

    with app.app_context():
        db.create_all()

    return app

这是我第一次部署网站,所以这可能是一个简单的修复,但我不知道我可以更改什么,所以任何提示都会有很大帮助!

python google-cloud-platform web-applications gcloud
1个回答
0
投票

正如@guillaume blaquiere 所提到的

不会解决您的问题,但是...您的应用程序可以使用 App Engine 标准。或者,使用 Cloud Run 而不是 App Engine Flex。您还应该使用秘密管理器而不是配置文件中的秘密

guillaume blaquiere 是对的,从 App Engine Flex 切换到 App Engine standardCloud Run 可能会帮助您解决问题。称为 App Engine 标准的托管环境是专门为运行 Web 应用程序而创建的。对于您的应用程序来说,它可能比 App Engine Flex 性能更高,并且设置和配置更简单。

Cloud Run 是一个无服务器计算平台,允许您运行代码而无需管理服务器。对于遇到流量突然激增的应用程序来说,这是一个不错的选择,因为它可以自动扩展和缩小以满足需求。

使用机密管理器来确保您的机密(包括数据库密码)安全。您的应用程序将因此变得更加易于管理和安全。

如果您在迁移到 App Engine 标准Cloud Run 方面需要帮助,可以使用以下文档:

© www.soinside.com 2019 - 2024. All rights reserved.