Skip to content

Commit b88f0ae

Browse files
committed
Enable memcached session backend for Docker deployments
1 parent 2fc157f commit b88f0ae

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

.env.sample

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ DEFAULT_FROM_EMAIL='{email}' # eg Company <[email protected]>
127127
# Session/Access Control
128128
LOCKDOWN_GEONODE=False
129129
X_FRAME_OPTIONS="SAMEORIGIN"
130+
SESSION_ENGINE=django.contrib.sessions.backends.cached_db
130131
SESSION_EXPIRED_CONTROL_ENABLED=True
131132
DEFAULT_ANONYMOUS_VIEW_PERMISSION=True
132133
DEFAULT_ANONYMOUS_DOWNLOAD_PERMISSION=True

geonode/settings.py

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -335,11 +335,21 @@
335335
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
336336
)
337337

338+
MEMCACHED_ENABLED = ast.literal_eval(os.getenv("MEMCACHED_ENABLED", "False"))
339+
MEMCACHED_BACKEND = os.getenv("MEMCACHED_BACKEND", "django.core.cache.backends.memcached.PyLibMCCache")
340+
MEMCACHED_LOCATION = os.getenv("MEMCACHED_LOCATION", "127.0.0.1:11211")
341+
MEMCACHED_LOCK_EXPIRE = int(os.getenv("MEMCACHED_LOCK_EXPIRE", 3600))
342+
MEMCACHED_LOCK_TIMEOUT = int(os.getenv("MEMCACHED_LOCK_TIMEOUT", 10))
343+
338344
CACHES = {
339345
# DUMMY CACHE FOR DEVELOPMENT
340346
"default": {
341347
"BACKEND": "django.core.cache.backends.dummy.DummyCache",
342348
},
349+
"memcached": {
350+
"BACKEND": MEMCACHED_BACKEND,
351+
"LOCATION": MEMCACHED_LOCATION
352+
},
343353
# MEMCACHED EXAMPLE
344354
# 'default': {
345355
# 'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache',
@@ -371,22 +381,16 @@
371381
},
372382
}
373383

374-
# Whitenoise Settings - ref.: http://whitenoise.evans.io/en/stable/django.html
375-
WHITENOISE_MANIFEST_STRICT = ast.literal_eval(os.getenv("WHITENOISE_MANIFEST_STRICT", "False"))
376-
COMPRESS_STATIC_FILES = ast.literal_eval(os.getenv("COMPRESS_STATIC_FILES", "False"))
377-
378-
MEMCACHED_ENABLED = ast.literal_eval(os.getenv("MEMCACHED_ENABLED", "False"))
379-
MEMCACHED_BACKEND = os.getenv("MEMCACHED_BACKEND", "django.core.cache.backends.memcached.PyLibMCCache")
380-
MEMCACHED_LOCATION = os.getenv("MEMCACHED_LOCATION", "127.0.0.1:11211")
381-
MEMCACHED_LOCK_EXPIRE = int(os.getenv("MEMCACHED_LOCK_EXPIRE", 3600))
382-
MEMCACHED_LOCK_TIMEOUT = int(os.getenv("MEMCACHED_LOCK_TIMEOUT", 10))
383-
384384
if MEMCACHED_ENABLED:
385385
CACHES["default"] = {
386386
"BACKEND": MEMCACHED_BACKEND,
387387
"LOCATION": MEMCACHED_LOCATION,
388388
}
389389

390+
# Whitenoise Settings - ref.: http://whitenoise.evans.io/en/stable/django.html
391+
WHITENOISE_MANIFEST_STRICT = ast.literal_eval(os.getenv("WHITENOISE_MANIFEST_STRICT", "False"))
392+
COMPRESS_STATIC_FILES = ast.literal_eval(os.getenv("COMPRESS_STATIC_FILES", "False"))
393+
390394
# Define the STATICFILES_STORAGE accordingly
391395
if not DEBUG and CACHE_BUSTING_STATIC_ENABLED:
392396
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
@@ -839,6 +843,12 @@
839843

840844
MESSAGE_STORAGE = "django.contrib.messages.storage.cookie.CookieStorage"
841845

846+
# Sessions
847+
SESSION_SERIALIZER = "django.contrib.sessions.serializers.PickleSerializer"
848+
SESSION_ENGINE = os.environ.get('SESSION_ENGINE', 'django.contrib.sessions.backends.db')
849+
if SESSION_ENGINE in ('django.contrib.sessions.backends.cached_db', 'django.contrib.sessions.backends.cached'):
850+
SESSION_CACHE_ALIAS = 'memcached' # use memcached cache if a cached backend is requested
851+
842852
# Security stuff
843853
SESSION_EXPIRED_CONTROL_ENABLED = ast.literal_eval(os.environ.get("SESSION_EXPIRED_CONTROL_ENABLED", "True"))
844854

@@ -1228,8 +1238,6 @@
12281238
"DETAIL": "never",
12291239
}
12301240

1231-
SESSION_SERIALIZER = "django.contrib.sessions.serializers.PickleSerializer"
1232-
12331241
try:
12341242
# try to parse python notation, default in dockerized env
12351243
ALLOWED_HOSTS = ast.literal_eval(os.getenv("ALLOWED_HOSTS"))
@@ -1939,6 +1947,7 @@ def get_geonode_catalogue_service():
19391947
)
19401948

19411949
ACCOUNT_OPEN_SIGNUP = ast.literal_eval(os.environ.get("ACCOUNT_OPEN_SIGNUP", "True"))
1950+
ACCOUNT_OPEN_SOCIALSIGNUP = ast.literal_eval(os.environ.get("ACCOUNT_OPEN_SOCIALSIGNUP", "True"))
19421951
ACCOUNT_APPROVAL_REQUIRED = ast.literal_eval(os.getenv("ACCOUNT_APPROVAL_REQUIRED", "False"))
19431952
ACCOUNT_ADAPTER = "geonode.people.adapters.LocalAccountAdapter"
19441953
ACCOUNT_AUTHENTICATION_METHOD = os.environ.get("ACCOUNT_AUTHENTICATION_METHOD", "username_email")

0 commit comments

Comments
 (0)