Python 3.8 DJANGO GCLOUD issue



奇怪而令人沮丧的问题。

有两个django应用程序需要托管在谷歌云上。第一个应用程序当前处于活动状态并正在提供服务,第二个应用程序不会让步。

情况如下:;

两个python 3.8 django应用程序两个不同的云项目,每个项目都有专用的MySQL 8.0实例

当python manage.py在本地运行服务器(app one(,glcoud第一个项目被激活,CLoud_sql_proxy正在侦听连接时,它正确地连接到了Google MySQL实例。

(开发(D:\开发>Cloud_sql_proxy.exe-实例=";someinstance:europe-west2:somename"=tcp:33062021/04/29 13:42:08收听127.0.0.1:3306例如:欧洲西部2:somenam2021/04/29 13:42:08准备好进行新连接

现在,我正在为第二个应用程序做同样的事情(不是同时(,正确激活项目,并根据与第二个Google MySQL实例的连接监听CLoud_sql_proxy的连接。

它不会连接到MySQL实例,而是使用本地实例。

if os.getenv('GAE_APPLICATION',无(:

总是正确的。

有人有什么建议吗?故障排除?也许有人也经历过同样的事情?两个应用程序的工作原理相同,云配置也相同。

设置.py

# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
import pymysql  # noqa: 402
pymysql.version_info = (1, 4, 6, 'final', 0)  # change mysqlclient version
pymysql.install_as_MySQLdb()
# Local development mode 24/04/2020
if os.getenv('GAE_APPLICATION', None):
#     Running on production App Engine, so connect to Google Cloud SQL using
#     the unix socket at /cloudsql/<your-cloudsql-connection string>
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '/cloudsql/someinstance:europe-west2:somename',
            'PORT': '3306',            
            'USER': 'admin',            
            'PASSWORD': '8t09q7OG0lx1jAy2',
            'NAME': 'bscsportaltest',
        }
    }
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #
    #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
    #
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }

os.getenv('GAE_APPLICATION', None)将以本地形式返回None,因为默认情况下此变量在您的环境中不存在(除非您手动添加(。在这种情况下,您的应用程序将选择sqlite本地数据库,因为这就是您的代码。

如果您希望在本地连接到Cloud SQL Proxy,那么您需要使用HOST=localhost的配置,而不是sqlite配置。如下所示:

# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
import pymysql  # noqa: 402
pymysql.version_info = (1, 4, 6, 'final', 0)  # change mysqlclient version
pymysql.install_as_MySQLdb()
# Local development mode 24/04/2020
if os.getenv('GAE_APPLICATION', None):
#     Running on production App Engine, so connect to Google Cloud SQL using
#     the unix socket at /cloudsql/<your-cloudsql-connection string>
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '/cloudsql/someinstance:europe-west2:somename',
            'PORT': '3306',            
            'USER': 'admin',            
            'PASSWORD': '8t09q7OG0lx1jAy2',
            'NAME': 'bscsportaltest',
        }
    }
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #
    #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
    #
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': '[YOUR-DATABASE]',
            'USER': '[YOUR-USERNAME]',
            'PASSWORD': '[YOUR-PASSWORD]',
    }
}

查看此链接以了解更多信息。

相关内容

  • 没有找到相关文章

最新更新