Merge pull request #1311 from Manouchehri/patch-5

(caching) improve s3 backend
This commit is contained in:
Ishaan Jaff 2024-01-08 09:47:57 +05:30 committed by GitHub
commit 5cfcd42763
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -156,6 +156,7 @@ class S3Cache(BaseCache):
# Convert value to JSON before storing in S3 # Convert value to JSON before storing in S3
serialized_value = str(value) serialized_value = str(value)
if ttl is not None: if ttl is not None:
cache_control = f"immutable, max-age={ttl}, s-maxage={ttl}"
import datetime import datetime
# Calculate expiration time # Calculate expiration time
@ -167,11 +168,22 @@ class S3Cache(BaseCache):
Key=key, Key=key,
Body=serialized_value, Body=serialized_value,
Expires=expiration_time, Expires=expiration_time,
CacheControl=cache_control,
ContentType="application/json",
ContentLanguage="en",
ContentDisposition=f"inline; filename=\"{key}.json\""
) )
else: else:
cache_control = "immutable, max-age=31536000, s-maxage=31536000"
# Upload the data to S3 without specifying Expires # Upload the data to S3 without specifying Expires
self.s3_client.put_object( self.s3_client.put_object(
Bucket=self.bucket_name, Key=key, Body=serialized_value Bucket=self.bucket_name,
Key=key,
Body=serialized_value,
CacheControl=cache_control,
ContentType="application/json",
ContentLanguage="en",
ContentDisposition=f"inline; filename=\"{key}.json\""
) )
except Exception as e: except Exception as e:
# NON blocking - notify users S3 is throwing an exception # NON blocking - notify users S3 is throwing an exception