Boto3 и freezegun - PullRequest
       33

Boto3 и freezegun

0 голосов
/ 28 августа 2018

Я пытаюсь протестировать разные варианты алгоритма на исторических данных. Алгоритм извлекает последние данные из 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()]
...