gpt4 book ai didi

python - 在 fabric 任务中使用环境相关的 django 设置

转载 作者:太空宇宙 更新时间:2023-11-04 03:51:50 24 4
gpt4 key购买 nike

我正在尝试使用在设置文件上设置的数据库配置来使用 fabric 进行数据库转储。

设置文件不止一个,所以我希望能够根据我选择的环境进行设置。

现在我的任务是这样的

def dump_database():
with cd('~/project_folder'), prefix(WORKON_VIRTUALENV):

django.settings_module(env.settings)
from django.conf import settings

dbname = settings.DATABASES['default']['NAME']
dbuser = settings.DATABASES['default']['USER']
dbpassword = settings.DATABASES['default']['PASSWORD']

fname = '/tmp/{0}-backup-{1}.sql.gz'.format(
dbname,
time.strftime('%Y%m%d%H%M%S')
)

run('mysqldump -u %s -p=%s %s | gzip -9 /tmp/backup-%s.sql.gz' % (
dbuser,
dbpassword,
dbname,
fname))

但是我收到一个 ImportError:

ImportError: Could not import settings 'project.settings.production'

我尝试使用 shell_env() 来设置 DJANGO_SETTINGS_MODULE 而不是 django.settings_module(env.settings),结果相同。

我使用任务根据环境指令更改环境:

def environment(name):
env.update(environments[name])
env.environment = name

这样,我希望能够从多个主机创建转储,例如:

fab environment:live dump_database
fab environment:otherhost dump_database

无需从 fabfile 上的所有主机复制数据库设置。

最佳答案

在 fabric 中导入 Django 设置文件在此处进行了说明。 http://fabric.readthedocs.org/en/1.3.3/api/contrib/django.html

引用上面的链接:

from fabric.api import run
from fabric.contrib import django

django.settings_module('myproject.settings')
from django.conf import settings

def dump_production_database():
run('mysqldump -u %s -p=%s %s > /tmp/prod-db.sql' % (
settings.DATABASE_USER,
settings.DATABASE_PASSWORD,
settings.DATABASE_NAME
))

关于python - 在 fabric 任务中使用环境相关的 django 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20976566/

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