Integrity script - handle 404 errors on e_tag retrival

This commit is contained in:
2025-05-04 16:39:30 +02:00
parent 31aaf0a6e5
commit b8df1f6d37

View File

@@ -2,6 +2,7 @@ from django.core.management.base import BaseCommand
from images.models import Image from images.models import Image
from images.utils import get_b2_resource from images.utils import get_b2_resource
import botocore
class Command(BaseCommand): class Command(BaseCommand):
@@ -22,9 +23,17 @@ class Command(BaseCommand):
if image_variant_set.count() > 1: if image_variant_set.count() > 1:
found_etags = [] found_etags = []
for image_variant in image_variant_set.all(): for image_variant in image_variant_set.all():
e_tag = self.bucket.Object(image_variant.backblaze_filepath).e_tag[ try:
1:-1 e_tag = self.bucket.Object(
] image_variant.backblaze_filepath
).e_tag[1:-1]
except botocore.exceptions.ClientError as e:
if e.response["Error"]["Code"] == "404":
print(f"Variant {image_variant.id} not found, deleting...")
image_variant.delete()
continue
else:
raise
if e_tag in found_etags: if e_tag in found_etags:
image_variant.delete() image_variant.delete()