Я читаю документацию AWS и у меня есть вопрос относительно поведения моего приложения.
- Я делаю запрос
get_key
на несуществующий ключ. - Затем я помещаю этот объект.
- Затем я делаю еще один
get_key
запрос к тому же ключу.
Теперь в документации объясняется, почему я могу получить Noneна шаге 3: «Предупреждение состоит в том, что если вы делаете HEAD или GET-запрос к имени ключа (чтобы найти, существует ли объект) перед созданием объекта, Amazon S3 обеспечивает возможную согласованность для чтения после записи». (из документов)
Что меня беспокоит, так это то, почему при вызове list
в мое ведро после шага 2 отображается ключ (даже если на шаге 3 я все еще получаю None
для этого же ключа).
for k in bucket.list(some_path):
key = k.get_key(k.name)
Большинство из них работают, но случайным образом некоторые возвращают None. Не должно ли быть так, что список возвращает key
, только если он доступен? И как я могу убедиться, что в конечном итоге получу значение (есть ли система уведомлений, посредством которой я получаю уведомление о том, что шаг 3 действительно вернет мой объект, или же может быть выполнена повторная попытка по тайм-ауту -> скажем, подождите пару секунд и попробуйтеопять?)