Повышение скорости, скрипт Python для извлечения меток Gmail из сообщений ⇐ Python
-
Anonymous
Повышение скорости, скрипт Python для извлечения меток Gmail из сообщений
Я работаю над сценарием Python, который экспортирует каждый идентификатор сообщения, присутствующий в моей учетной записи Gmail, вместе с добавленными к ним метками (полный путь к меткам) в файл TXT.
Сам скрипт работает, но скорость экспорта около 2 сообщений в секунду. Для небольших аккаунтов это нормально, но для более крупных экспорт может легко занять несколько дней, а в некоторых случаях и недель.
Есть ли способ увеличить скорость обработки скрипта или ограничение исходит от самого Google?
def get_label_path(service, label_id): label = service.users().labels().get(userId='me', id=label_id).execute() label_path = метка['имя'] пока «родитель» в метке: label = service.users().labels().get(userId='me', id=label['parent']).execute() label_path = label['name'] + '/' + label_path вернуть путь к метке защита get_message_ids_with_labels (сервис): профиль = service.users().getProfile(userId='me').execute() page_token = Нет с open(OUTPUT_FILE_PATH, 'w') в качестве выходного_файла: пока правда: результаты = service.users().messages().list(userId='me', pageToken=page_token).execute() messages = results.get('messages', []) если нет сообщений: перерыв для сообщения в сообщениях: message_id = сообщение['id'] msg = get_message (сервис, message_id) заголовки = msg['payload']['headers'] message_id = next((header['value'] для заголовка в заголовках, если header['name'].lower() == 'message-id'), None) label_ids = msg.get('labelIds', []) labels = [get_label_path(service, label_id) для label_id в label_ids] output_file.write(f"Идентификатор сообщения: {message_id} - Ярлыки: {labels}\n") page_token = results.get('nextPageToken') если не page_token: перерыв
Я работаю над сценарием Python, который экспортирует каждый идентификатор сообщения, присутствующий в моей учетной записи Gmail, вместе с добавленными к ним метками (полный путь к меткам) в файл TXT.
Сам скрипт работает, но скорость экспорта около 2 сообщений в секунду. Для небольших аккаунтов это нормально, но для более крупных экспорт может легко занять несколько дней, а в некоторых случаях и недель.
Есть ли способ увеличить скорость обработки скрипта или ограничение исходит от самого Google?
def get_label_path(service, label_id): label = service.users().labels().get(userId='me', id=label_id).execute() label_path = метка['имя'] пока «родитель» в метке: label = service.users().labels().get(userId='me', id=label['parent']).execute() label_path = label['name'] + '/' + label_path вернуть путь к метке защита get_message_ids_with_labels (сервис): профиль = service.users().getProfile(userId='me').execute() page_token = Нет с open(OUTPUT_FILE_PATH, 'w') в качестве выходного_файла: пока правда: результаты = service.users().messages().list(userId='me', pageToken=page_token).execute() messages = results.get('messages', []) если нет сообщений: перерыв для сообщения в сообщениях: message_id = сообщение['id'] msg = get_message (сервис, message_id) заголовки = msg['payload']['headers'] message_id = next((header['value'] для заголовка в заголовках, если header['name'].lower() == 'message-id'), None) label_ids = msg.get('labelIds', []) labels = [get_label_path(service, label_id) для label_id в label_ids] output_file.write(f"Идентификатор сообщения: {message_id} - Ярлыки: {labels}\n") page_token = results.get('nextPageToken') если не page_token: перерыв