From 58edaf607743861404639564bb32c9f6d50d469c Mon Sep 17 00:00:00 2001 From: Dirk Doesburg Date: Wed, 10 Apr 2024 19:43:22 +0200 Subject: [PATCH] Optimize fetch_thumbnails (#3624) In case of a redis backend, this should prevent doing a redis pipeline that looks for a thumbnail for image "" many times, for each empty image field (such as a member without profile picture). Consider for example this (partial) redis pipeline call from sentry: ``` "HGETALL 'djthumbs:thumbnails:avatars/98a3dd0519bae43a2bfc45f2bb8653a0.jpg'", "HGETALL 'djthumbs:thumbnails:'", "HGETALL 'djthumbs:thumbnails:'", "HGETALL 'djthumbs:thumbnails:avatars/1152ba8439c354c207967279fcbf4fcb.jpg'", "HGETALL 'djthumbs:thumbnails:'", // ... (45 more) ``` --- website/utils/media/services.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/website/utils/media/services.py b/website/utils/media/services.py index 90402b2bd..c9f2cae92 100644 --- a/website/utils/media/services.py +++ b/website/utils/media/services.py @@ -89,6 +89,9 @@ def fetch_thumbnails(images: list, sizes=None): :param sizes: A list of sizes to prefetch. If None, all sizes will be prefetched. :return: None """ + # Filter out empty ImageFieldFiles. + images = list(filter(bool, images)) + if not images: return