Я пытаюсь загрузить файл с S3 с помощью boto, но только если локальная копия файла старше удаленного файла.
Я использую заголовок 'If-Modified-Since' и код ниже:
#!/usr/bin/python
import os
import datetime
import boto
from boto.s3.key import Key
bucket_name = 'my-bucket'
conn = boto.connect_s3()
bucket = conn.get_bucket(bucket_name)
def download(bucket, filename):
key = Key(bucket, filename)
headers = {}
if os.path.isfile(filename):
print "File exists, adding If-Modified-Since header"
modified_since = os.path.getmtime(filename)
timestamp = datetime.datetime.utcfromtimestamp(modified_since)
headers['If-Modified-Since'] = timestamp.strftime("%a, %d %b %Y %H:%M:%S GMT")
try:
key.get_contents_to_filename(filename, headers)
except boto.exception.S3ResponseError as e:
return 304
return 200
print download(bucket, 'README')
Проблема в том, что, когда локальный файл не существует, все работает хорошо, и файл загружается. Когда я запускаю script во второй раз, моя функция возвращает 304, как ожидалось, но файл, который был ранее загружен, удаляется.