目前,我的settings.py
文件中包含以下内容:
DEBUG = True
LOCAL = True
TEMPLATE_DEBUG = DEBUG
SITE_TITLE = 'Stack Overflow Question'
REMOTE_SITE_URL = "http://************:8080"
LOCAL_SITE_URL = "http://************:8000"
ADMINS = (
# ('Your Name', 'your_email@domain.com'),
)
MANAGERS = ADMINS
if LOCAL:
SITE_URL = LOCAL_SITE_URL
ROOT_URL = '/mnt/hgfs/Sites/************'
engine = 'sqlite3'
dbName = '************.db'
dbUser = ''
dbPassword = ''
dbHost = ''
dbPort = ''
else:
SITE_URL = REMOTE_SITE_URL
ROOT_URL = '/var/www/vhosts/www.*************.com/public/'
engine = 'mysql'
dbName = '************'
dbUser = 'www-data'
dbPassword = '************'
dbHost = ''
dbPort = ''
这个想法是,如果我将LOCAL=True
修改为false,我可以在sqlite3
数据库和保存在服务器上的mysql
之间切换。但是在使用SVN时,这是很麻烦的。我想要的是让settings.py
能够智能地知道它是在服务器上还是在本地运行。有没有办法嗅探URL、IP或简单地检查存在于服务器上而不是本地的文件?我不仅在寻找一种解决方案,而且还在寻找一种不会加重服务器负担的解决方案。如果每次Django呈现页面时都会发生检查文件是否存在,那么检查文件是否存在可能是一个有点繁重的过程。有什么建议吗?
发布于 2010-02-19 18:43:59
不会在每次渲染时都检查文件是否存在。它实际上只会在您启动解释器进程时发生,这完全取决于您的部署配置。这将取决于您的and服务器设置的不同,但如果您使用的是apache,主要是MaxRequestPerChild和StartServers,以及相关参数。例如,如果我有
StartServers 8
MaxrequestsPerChild 4000
在预派生的apache中,我将测试该文件的前8个请求,侦听另外32,000个请求,然后再测试该文件8次。(是的,我知道这比这复杂得多。)
关键是,加载代码的大多数实现不会经常重新生成settings.py文件。考虑到这一点,我们来看看:
import os
if os.uname()[1] == 'my.development.server.com':
LOCAL = True
else:
LOCAL = False
https://stackoverflow.com/questions/2298657
复制相似问题