Во-первых, немного о том, что происходит под капотом:
Перезапись в GCS - это оперативная операция. Когда запрос на перезапись подтверждает успешность, перезапись завершена, и новая операция готова. Недостатком является то, что пользователь должен держать открытым соединение перезаписи, пока копирование завершено. Однако соединение не длится вечно. Если операция займет больше, чем, скажем, 30 секунд или около того, запрос на перезапись может закончиться не завершенным. В этом случае он вернет маркер перезаписи, который клиент должен использовать для возобновления запроса, иначе дальнейший прогресс не будет достигнут.
В Python, который выглядит как-то например:
rewrite_token = False
while True:
rewrite_token, bytes_rewritten, bytes_to_rewrite = dst_blob.rewrite(
src_blob, token=rewrite_token)
print(f'Progress so far: {bytes_rewritten}/{bytes_to_rewrite} bytes.')
if not rewrite_token:
break
Это не имеет значения для небольших объектов или для объектов, где службе не требуется выполнять какую-либо работу для перемещения данных. Однако для больших операций вам нужно проверить, требуется ли возобновление.
Тем не менее, время ожидания - это не то, что я ожидаю увидеть из вашего кода. Это другой вид неудачи. Вы уверены, что ошибка, которую вы получаете, является тайм-аутом?