Я пытаюсь протестировать разные варианты алгоритма на исторических данных. Алгоритм извлекает последние данные из s3, используя текущую временную метку в качестве конечной даты (файлы имеют временные метки в своем имени файла). Я попытался использовать freezegun (полезный пакет с изменениями данных в определенной области), но столкнулся с проблемой, что boto3 ожидает, что время на одной машине будет точным с точностью до 15 минут.
При тестировании на различные задержки выясняется, что что-то более 15 минут слишком длинное. Это кажется разумным делом с точки зрения boto3, но в надежде найти обходной путь, так как код, извлекающий данные из s3, закопан довольно глубоко и потребует некоторого рефакторинга или насмешек, чтобы обойти это. Любые идеи приветствуются.
Пример показывает фрагмент кода игрушки, который пытается составить список содержимого корзины.
import boto3
import freezegun
my_key = ...
my_secret = ...
my_bucket = ...
with freezegun.freeze_time(datetime.utcnow() - timedelta(seconds=15*60+5)):
bs3 = boto3.resource('s3', aws_access_key_id=my_key, aws_secret_access_key=my_secret)
bucket = bs3.Bucket(my_bucket)
files= [x.key for x in bucket.objects.all()]