gpt4 book ai didi

django - Google App Engine 上的 Django 应用程序是如何构建的?

转载 作者:行者123 更新时间:2023-12-04 04:06:57 26 4
gpt4 key购买 nike

我已经通读了所有关于 App Engine 的 Google 文档和各种其他博客文章,但我仍然不清楚在 App Engine 上运行的 Django 应用程序的结构。

在我看来,App 引擎实例附加到一个 SQL 数据库,Google 提供自动缩放和自动负载平衡,将根据当前负载复制您的 SQL 数据库。

就 Django python 代码而言,这意味着什么?部署 Django 应用程序似乎只需要运行 glcoud app deploy。如果 App Engine 实例的 SQL 数据库实时自动扩展和复制,Django 应用程序是否会与它们一起复制?还是所有 HTTPS 请求都将通过单个 Django 应用程序,无论复制如何?

此外,Django 后端代码是否物理上拥抱它所连接的数据库?

最佳答案

  1. 据我所知,App 引擎实例附加到一个 SQL 数据库。

App Engine 实例不附加任何东西。您还需要使用 MySQL 或 Postgres 部署一个 Cloud SQL 实例,然后使用 Cloud SQL 代理将您的应用程序连接到该实例。使用 Cloud SQL 不是强制性的,您也可以在 Compute Engine 甚至第三方平台上运行 MySQL,但您需要确定将其连接到您的应用程序的正确方法。

  1. Google 提供自动缩放和自动负载平衡,可根据当前负载复制您的 SQL 数据库。

如前所述here您无法自动缩放数据库实例,无论是在 Cloud SQL 中还是在任何其他基础架构支持中。 Google Cloud SQL 为您提供的是一个完全托管的实例,这意味着您不必担心备份、补丁和修复。此外,Cloud SQL 为您提供 High availability在你的实例失败的情况下,你的应用程序的停机时间减少了很多,也为你提供了一种简单的方法来添加read replicas ,提高读取操作的性能。

  1. 就 Django python 代码而言,这意味着什么?可能您想看一下 Github samplerunning Django on App Engine quickstart .

  2. 部署 Django 应用程序似乎只需要运行 glcoud app deploy。这并不准确,您可以运行 glcoud app deploy 将任何有效的应用程序部署到 App Engine,在 python 中,最小应用程序需要一个 main.py 文件、一个 requirements.txt 和一个 app.yaml 文档.对于 Django,您需要有效的 Django 应用程序 + app.yaml 文件(查看第 3 点中的 git repo)

  3. 如果 App Engine 实例的 SQL 数据库实时自动扩展和复制,Django 应用程序是否会与它们一起复制?同样,没有这样的 App Engine SQL 数据库。数据库实例将独立于 App Engine 中的应用程序运行。当您的 App Engine 应用程序自动缩放您的 Cloud SQL 实例(或计算引擎,如果您决定这样做)将保持与以前完全一样,它对 App Engine 及其行为是“不可知的”,对于 App Engine 也是如此,您的 App Engine 实例不知道 Cloud SQL 的复制行为。您将在它们之间建立来回发送请求的连接。

  4. 或者无论复制如何,所有 HTTPS 请求都会通过单个 Django 应用程序吗?您可以在 App Engine 中让多个实例同时运行您的应用程序,它们将通过 Cloud SQL proxy 向您的 Cloud SQL 数据库发送请求。 ,而不是 HTTP 请求。

  5. 此外,Django 后端代码是否在物理上拥抱它所连接的数据库?同样,您的 Django/App Engine 应用程序是一回事,您的 Cloud SQL 数据库是另一回事,它们将通过 Cloud SQL 代理相互通信。所以没有拥抱或 body 接触,只有“社交距离

希望对你有帮助

关于django - Google App Engine 上的 Django 应用程序是如何构建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62311579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com