You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同代码库多Django应用能否在服务端wsgi.py安全覆盖配置?如何操作?

方案可行性说明

首先明确:这个方案是完全安全可行的。PythonAnywhere平台上每个独立Web应用的WSGI进程完全隔离,各自的环境变量、加载逻辑互不干扰,通过独立的WSGI文件区分配置不会出现配置串用的问题。

具体实现步骤

步骤1:修改两个应用各自的WSGI文件

给每个应用的WSGI文件添加独有的实例标识环境变量,示例如下:

站点1的WSGI配置

# +++++++++++ DJANGO +++++++++++
import os
import sys

path = '/home/你的用户名/项目根目录'
if path not in sys.path:
    sys.path.append(path)

# 新增:标记当前为站点1实例
os.environ['APP_INSTANCE'] = 'site1'
os.environ['DJANGO_SETTINGS_MODULE'] = 'core.settings'

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

站点2的WSGI配置

仅需要修改APP_INSTANCE的取值即可:

# 新增:标记当前为站点2实例
os.environ['APP_INSTANCE'] = 'site2'

步骤2:修改项目settings.py适配多实例

在core/settings.py中读取刚才设置的环境变量,根据实例类型加载对应数据库配置:

import os

# 读取实例标识,默认值用于本地开发场景
APP_INSTANCE = os.getenv('APP_INSTANCE', 'local')

# 按实例类型分配数据库配置
if APP_INSTANCE == 'site1':
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '你的站点1数据库名',
            'USER': '站点1数据库用户名',
            'PASSWORD': '站点1数据库密码',
            'HOST': '站点1对应的数据库主机地址',
        }
    }
elif APP_INSTANCE == 'site2':
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '你的站点2数据库名',
            'USER': '站点2数据库用户名',
            'PASSWORD': '站点2数据库密码',
            'HOST': '站点2对应的数据库主机地址',
        }
    }
else:
    # 本地开发默认数据库配置
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        }
    }
如果你使用.env文件存储配置

可以直接在WSGI中指定对应实例的.env文件路径,不需要修改settings的数据库逻辑:

  1. 项目根目录下准备两份.env文件:.env.site1、.env.site2,分别写入两个实例的数据库配置
  2. 在WSGI文件中添加加载对应.env的逻辑,示例如下:
# 放在os.environ['DJANGO_SETTINGS_MODULE']之前
from dotenv import load_dotenv
load_dotenv(os.path.join(path, f'.env.{os.environ["APP_INSTANCE"]}'))
生效操作

修改完WSGI文件和配置后,分别到PythonAnywhere的两个Web应用管理面板点击Reload按钮重启应用即可生效。

内容的提问来源于stack exchange,提问作者CFW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:39:02