Время ожидания запроса API Google Диска в python httplib2

#python-3.x #google-drive-api #httplib2

Вопрос:

Я использую проект Google Google Drive API для создания и обновления файлов на Google диске, до вчерашнего дня все работало нормально. Мой скрипт на python тоже работал нормально, но через пару часов я получаю следующую ошибку:

 lib/python3.9/site-packages/httplib2/__init__.py", line 1136, in connect
    sock.connect((self.host, self.port))
socket.timeout: timed out
 

Это функция, которую я использую для подключения Google Drive API :

 def Create_Service(client_secret_file, api_name, api_version, *scopes):
    print(client_secret_file, api_name, api_version, scopes, sep='-')
    CLIENT_SECRET_FILE = client_secret_file
    API_SERVICE_NAME = api_name
    API_VERSION = api_version
    SCOPES = [scope for scope in scopes[0]]
    print(SCOPES)

    cred = None

    pickle_file = f'token_{API_SERVICE_NAME}_{API_VERSION}.pickle'
    # print(pickle_file)

    if os.path.exists(pickle_file):
        with open(pickle_file, 'rb') as token:
            cred = pickle.load(token)

    if not cred or not cred.valid:
        if cred and cred.expired and cred.refresh_token:
            cred.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)
            cred = flow.run_local_server()

        with open(pickle_file, 'wb') as token:
            pickle.dump(cred, token)

    try:
        service = build(API_SERVICE_NAME, API_VERSION, credentials=cred)
        print(API_SERVICE_NAME, 'service created successfully')
        return service
    except Exception as e:
        print('Unable to connect.')
        print(e)
        return None
 

Он подключается к Google Drive API , но всякий раз, когда мой код пытается выполнить какое-либо действие, например, прочитать или записать в файл или папку, он получает socket.timeout: timed out .
Я изменил свои учетные данные, даже создал новый проект google dev console со свежими новыми учетными данными, повторно аутентифицировал API с помощью своей учетной записи Google, чтобы получить новый токен, но, похоже, ничего не работает.
Я тоже проверил зависимость от пакета pip check , и она возвращает, что нарушенной зависимости нет.

# Edit 1:

Мой код для чтения файла из Google Drive :

 def __read_file_from_drive():
    CLIENT_SECRET_FILE = 'client_secrets.json'
    API_NAME = 'drive'
    API_VERSION = 'v3'
    SCOPES = ['https://www.googleapis.com/auth/drive']

    service = Create_Service(CLIENT_SECRET_FILE, API_NAME, API_VERSION, SCOPES)
    file = 'my_file_id'
    request = service.files().get_media(fileId=file)
    fh = io.BytesIO()
    downloader = MediaIoBaseDownload(fd=fh, request=request)
    
    done = False
    while not done:
        status, done = downloader.next_chunk()
        print('File downloaded...')

    fh.seek(0)
    return fh.read().decode('ascii')
 

Code to save file to Google Drive :

 def __save_file_to_drive():
    CLIENT_SECRET_FILE = 'client_secrets.json'
    API_NAME = 'drive'
    API_VERSION = 'v3'
    SCOPES = ['https://www.googleapis.com/auth/drive']

    service = Create_Service(CLIENT_SECRET_FILE, API_NAME, API_VERSION, SCOPES)

    __folder_id = 'my_folder_id'
    __files = ['my_files_list']
    __mime_type = 'text/csv'

    for __file in __files:
        file_meta = {
            'name': __file,
            'parents': [__folder_id]
        }

        media = MediaFileUpload('./{0}'.format(__file), mimetype=__mime_type)
        service.files().create(
            body=file_meta,
            media_body=media,
            fields='id'
        ).execute()
 

Текущая ошибка, которую я получаю:

 Traceback (most recent call last):
  File "~/PycharmProjects/project_name/google_drive_upload.py", line 75, in <module>
    returned = int(__read_file_from_drive())
  File "~/PycharmProjects/project_name/google_drive_upload.py", line 65, in __read_file_from_drive
    status, done = downloader.next_chunk()
  File "~/mambaforge/envs/project_name/lib/python3.9/site-packages/googleapiclient/_helpers.py", line 134, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "~/mambaforge/envs/project_name/lib/python3.9/site-packages/googleapiclient/http.py", line 746, in next_chunk
    resp, content = _retry_request(
  File "~/mambaforge/envs/project_name/lib/python3.9/site-packages/googleapiclient/http.py", line 227, in _retry_request
    raise exception
  File "~/mambaforge/envs/project_name/lib/python3.9/site-packages/googleapiclient/http.py", line 196, in _retry_request
    resp, content = http.request(uri, method, *args, **kwargs)
  File "~/mambaforge/envs/project_name/lib/python3.9/site-packages/google_auth_httplib2.py", line 218, in request
    response, content = self.http.request(
  File "~/mambaforge/envs/project_name/lib/python3.9/site-packages/httplib2/__init__.py", line 1708, in request
    (response, content) = self._request(
  File "~/mambaforge/envs/project_name/lib/python3.9/site-packages/httplib2/__init__.py", line 1424, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "~/mambaforge/envs/project_name/lib/python3.9/site-packages/httplib2/__init__.py", line 1346, in _conn_request
    conn.connect()
  File "~/mambaforge/envs/project_name/lib/python3.9/site-packages/httplib2/__init__.py", line 1136, in connect
    sock.connect((self.host, self.port))
socket.timeout: timed out
 

Комментарии:

1. Можете ли вы показать пример кода, который читает/записывает? Вместе со строкой появляется ошибка?

2. @Рафа Гильермо Я обновил вопрос с фрагментом кода и полной ошибкой.

3. Проблема была решена автоматически в один момент, теперь это происходит снова, пожалуйста, если кто-нибудь может помочь…