【发布时间】:2016-04-19 00:21:42
【问题描述】:
我在 AWS Beanstalk 上运行一个 Django 站点,当 AWS 启动一个新实例以处理流量高峰时,我遇到了会话问题。定期在 /admin 中编辑内容的用户在尝试保存时会被注销,并且他们的编辑会丢失。
问题是:在多实例 Django 环境中处理会话的最佳方式是什么?
中间件设置:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
)
缓存设置(使用 AWS Elasticache):
已编辑,最初声明的位置是 127.0.0.1,这是不正确的
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'cache.mydomain.com:11211',
}
}
会话设置:
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
我也试过了:
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SESSION_SAVE_EVERY_REQUEST = True
但这没有用。
我应该考虑数据库支持的会话吗?我担心性能。
【问题讨论】:
标签: django session amazon-web-services