Cache site with Redis
This commit is contained in:
parent
1323ba27a6
commit
32e9ccb413
3 changed files with 62 additions and 9 deletions
37
docker-compose.yaml
Normal file
37
docker-compose.yaml
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
services:
|
||||||
|
# Postgres - Database
|
||||||
|
feedvault_postgres:
|
||||||
|
container_name: feedvault_postgres
|
||||||
|
image: postgres:16
|
||||||
|
user: "1000:1000"
|
||||||
|
ports:
|
||||||
|
- 5434:5432 # Host:Container
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=${PGUSER}
|
||||||
|
- POSTGRES_PASSWORD=${PGPASSWORD}
|
||||||
|
- POSTGRES_DB=${PGDATABASE}
|
||||||
|
volumes:
|
||||||
|
- /mnt/Fourteen/Docker/FeedVault/Postgres:/var/lib/postgresql/data
|
||||||
|
networks:
|
||||||
|
- db
|
||||||
|
redis:
|
||||||
|
container_name: feedvault_redis
|
||||||
|
image: redis:7
|
||||||
|
restart: always
|
||||||
|
user: "1000:1000"
|
||||||
|
ports:
|
||||||
|
- 6380:6379 # Host:Container
|
||||||
|
environment:
|
||||||
|
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
||||||
|
command: /bin/sh -c 'redis-server --requirepass ${REDIS_PASSWORD} --appendonly yes --maxmemory 4gb --maxmemory-policy allkeys-lru'
|
||||||
|
networks:
|
||||||
|
- redis
|
||||||
|
volumes:
|
||||||
|
- /mnt/Fourteen/Docker/FeedVault/Redis:/data
|
||||||
|
|
||||||
|
networks:
|
||||||
|
db:
|
||||||
|
driver: bridge
|
||||||
|
redis:
|
||||||
|
driver: bridge
|
||||||
|
|
@ -112,7 +112,9 @@ MIDDLEWARE: list[str] = [
|
||||||
"whitenoise.middleware.WhiteNoiseMiddleware",
|
"whitenoise.middleware.WhiteNoiseMiddleware",
|
||||||
"debug_toolbar.middleware.DebugToolbarMiddleware",
|
"debug_toolbar.middleware.DebugToolbarMiddleware",
|
||||||
"django.contrib.sessions.middleware.SessionMiddleware",
|
"django.contrib.sessions.middleware.SessionMiddleware",
|
||||||
|
"django.middleware.cache.UpdateCacheMiddleware",
|
||||||
"django.middleware.common.CommonMiddleware",
|
"django.middleware.common.CommonMiddleware",
|
||||||
|
"django.middleware.cache.FetchFromCacheMiddleware",
|
||||||
"django.middleware.csrf.CsrfViewMiddleware",
|
"django.middleware.csrf.CsrfViewMiddleware",
|
||||||
"django.contrib.auth.middleware.AuthenticationMiddleware",
|
"django.contrib.auth.middleware.AuthenticationMiddleware",
|
||||||
"django.contrib.messages.middleware.MessageMiddleware",
|
"django.contrib.messages.middleware.MessageMiddleware",
|
||||||
|
|
@ -167,3 +169,17 @@ STORAGES: dict[str, dict[str, str]] = {
|
||||||
|
|
||||||
# Our site ID
|
# Our site ID
|
||||||
SITE_ID = 1
|
SITE_ID = 1
|
||||||
|
|
||||||
|
REDIS_PASSWORD: str = os.getenv(key="REDIS_PASSWORD", default="")
|
||||||
|
REDIS_HOST: str = os.getenv(key="REDIS_HOST", default="192.168.1.2")
|
||||||
|
REDIS_PORT: str = os.getenv(key="REDIS_PORT", default="6379")
|
||||||
|
CACHES: dict[str, dict[str, str]] = {
|
||||||
|
"default": {
|
||||||
|
"BACKEND": "django.core.cache.backends.redis.RedisCache",
|
||||||
|
"LOCATION": f"redis://:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/0",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
CACHE_MIDDLEWARE_ALIAS = "default"
|
||||||
|
CACHE_MIDDLEWARE_SECONDS = 600 # 10 minutes
|
||||||
|
CACHE_MIDDLEWARE_KEY_PREFIX = "feedvault"
|
||||||
|
|
|
||||||
|
|
@ -40,9 +40,9 @@ unsafe-fixes = true
|
||||||
preview = true
|
preview = true
|
||||||
select = ["ALL"]
|
select = ["ALL"]
|
||||||
ignore = [
|
ignore = [
|
||||||
"CPY001", # Missing copyright notice at top of file
|
"CPY001", # Missing copyright notice at top of file
|
||||||
"ERA001", # Found commented-out code
|
"ERA001", # Found commented-out code
|
||||||
"FIX002", # Line contains TODO
|
"FIX002", # Line contains TODO
|
||||||
]
|
]
|
||||||
line-length = 120
|
line-length = 120
|
||||||
|
|
||||||
|
|
@ -51,10 +51,10 @@ convention = "google"
|
||||||
|
|
||||||
[tool.ruff.per-file-ignores]
|
[tool.ruff.per-file-ignores]
|
||||||
"**/tests.py" = [
|
"**/tests.py" = [
|
||||||
"S101", # Allow asserts
|
"S101", # Allow asserts
|
||||||
"ARG", # Allow unused arguments
|
"ARG", # Allow unused arguments
|
||||||
"FBT", # Don't care about booleans as positional arguments in tests, e.g. via @pytest.mark.parametrize()
|
"FBT", # Don't care about booleans as positional arguments in tests, e.g. via @pytest.mark.parametrize()
|
||||||
"PLR2004", # Allow "assert response.status_code == 200" when testing views
|
"PLR2004", # Allow "assert response.status_code == 200" when testing views
|
||||||
"D102", # Allow missing docstrings in tests
|
"D102", # Allow missing docstrings in tests
|
||||||
"PLR6301", # Checks for the presence of unused self parameter in methods definitions.
|
"PLR6301", # Checks for the presence of unused self parameter in methods definitions.
|
||||||
]
|
]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue