Как загрузить 30 000 изображений с помощью API Google Диска? - PullRequest
0 голосов
/ 27 мая 2020

Мне нужно загрузить 30 000 изображений с помощью Google Drive API (у меня все их file_id сохранены локально), чтобы я мог загрузить их на AWS S3, но после всего лишь 20-30 запросов изображений к API , Я получаю ошибку 403, что означает, что я превышаю квоту API (1000 запросов на 100se c на пользователя - не знаю, как я превышаю ее, но это не относится к делу). Мой код спит в течение 2 секунд между каждым запросом, и я все еще получаю эту ошибку. Мне нужно загрузить и загрузить эти файлы в разумные сроки, есть предложения?

Ответы [ 2 ]

0 голосов
/ 27 мая 2020
  • Загрузка изображений с помощью Drive API будет считаться одним запросом на изображение, поэтому квота может быть легко превышена.

  • К счастью, есть обходной путь - вы можете использовать пакетные запросы , что позволяет загружать до 100 изображений с помощью одного запроса.

  • В documentaiton представлены примеров для реализации в Python.

  • Кстати, вы можете проверить использование квоты в консоли GCP.
0 голосов
/ 27 мая 2020

Я не уверен, какую библиотеку вы используете для получения запроса. Но, насколько я понимаю, urlopen вызовет ошибку HTTPError для тех, кто не может обработать, например '403' (запрос запрещен).

Ссылка - Список ошибок

403: ('Forbidden',
      'Request forbidden -- authorization will not help').

Вместо этого вы можете использовать - urlretrieve ()

Совместное использование небольшого образца кода: -

import urllib.request
url = 'http://example.com/'
response = urllib.request.urlopen(url)
data = response.read()      # a `bytes` object
text = data.decode('utf-8') # a `str`; this step can't be used if data is binary
...