2016-03-22 2 views
1

Я пытаюсь написать приложение на Python, чтобы пользователи могли перенести их архивы LISTSERV в группы Google для нашего домена. При попытке вызвать archive.insert (https://developers.google.com/admin-sdk/groups-migration/v1/reference/archive/insert), я получаю HttpError 500 «Ошибка backend».Получение 500 «Ошибка backend» при использовании API миграции групп Google

Я читаю в архиве так:

import mailbox 
mailbox.mbox('path/to/archive') 

При переборе полученных сообщений в объекте MBox, вызывая .as_string() функция приводит к чему-то вроде этого:

Date: Mon, 10 Feb 2014 10:58:41 -0600 
Reply-To: Bob's test list <[email protected]>, 
Bob Boberson <[email protected]> 
Sender: Bob's test list <[email protected]> 
From: Bob Boberson <[email protected]> 
Subject: blah blah blah 
Mime-Version: 1.0 
Content-Transfer-Encoding: quoted-printable 
Content-Type: text/plain; charset="UTF-8" 
Message-ID: <[email protected]> 


Test message. 

Некоторые упоминаемые здесь вопросы позволяют избежать ошибок на сервере, гарантируя, что Message-ID будет в правильном формате. Тем не менее, сообщение ['Message-ID'] для этого конкретного сообщения приводит к < [email protected]>, поэтому я не уверен, что здесь указан идентификатор сообщения.

Я пытаюсь вызвать вставку следующим образом:

stream = StringIO.StringIO() 
stream.write(msg.as_string()) 
media = apiclient.http.MediaIoBaseUpload(stream, mimetype='message/rfc822') 
result = migration_api.archive().insert(groupId=group_email, media_body=media).execute() 

Любые идеи? Заранее спасибо :)

UPDATE

Согласно предложению Джея в комментариях, я поставил httplib2.debuglevel = 1. Вот результат в моих журналах в попытке перенести тот же адрес электронной почты:

send: 'POST /upload/groups/v1/groups/group-name%40lists.domain.com/archive?uploadType=media&alt=json HTTP/1.1\r\nHost: www.googleapis.com\r\ncontent-length: 711\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: google-api-python-client/1.4.0 (gzip)\r\ncontent-type: message/rfc822\r\nauthorization: Bearer *******\r\n\r\nDate: Mon, 10 Feb 2014 10:58:41 -0600\nReply-To: Bob\'s test list <[email protected]>,\n Bob Boberson <[email protected]>\nSender: Bob\'s test list <[email protected]>\nFrom: Bob Boberson <[email protected]>\nSubject: blah blah blah\nMime-Version: 1.0\nContent-Transfer-Encoding: quoted-printable\nContent-Type: text/plain; charset="UTF-8"\nMessage-ID: <[email protected]>\n\n\nTest message.' 

reply: 'HTTP/1.1 500 Internal Server Error\r\n' 

header: X-GUploader-UploadID: ***** 
header: Vary: Origin 
header: Vary: X-Origin 
header: Content-Type: application/json; charset=UTF-8 
header: Content-Length: 177 
header: Date: Wed, 23 Mar 2016 21:10:20 GMT 
header: Server: UploadServer 
header: Alternate-Protocol: 443:quic,p=1 
header: Alt-Svc: quic=":443"; ma=2592000; v="31,30,29,28,27,26,25" 

UPDATE (раствор)

оказывается, это была проблема с разрешениями: при переходе домен ширина сервисной учетной записи, обязательно выдайте себя за пользователя, которому принадлежит группа. FWIW, IMHO, сообщения об ошибках для API миграции групп должны быть немного более ясными относительно проблемы. «Ошибка backend» является ужасно общей. Выяснить, что это было похоже на то, чтобы выталкивать проблему с помощью ручки, пока она не сработает.

+0

Всегда возвращается ли ошибка 500? Обычно бэкэнд-ошибка означает повторную попытку через несколько секунд (Google для экспоненциального отсрочка для получения дополнительной информации). –

+0

Jay - Спасибо за ваш быстрый ответ! Да - ошибка возникает каждый раз (я завершаю вызов execute в функции, которая повторяет несколько раз с экспоненциальным отклонением). –

+0

Это приводит меня к мысли, что может возникнуть проблема с кодировкой строк/файлов с архивами LISTSERV, которые я получаю (любопытно, я попытался использовать образец письма из [Google Migration Migration] (https://developers.google .com/admin-sdk/groups-migration/v1/guides/manage-email-migration # management_migrations) вместо одного из наших собственных массированных файлов архива LISTSERV и имел ту же ошибку 500), или, возможно, проблема с конфигурацией на моем конец. –

ответ

1

Оказалось, что это была проблема с правами доступа: При переходе по пути учетной записи службы домена обязательно выдавайте себя за пользователя, которому принадлежит группа. FWIW, IMHO, сообщения об ошибках для API миграции групп должны быть немного более ясными относительно проблемы. «Ошибка backend» является ужасно общей. Выяснить, что это было похоже на то, чтобы выталкивать проблему с помощью ручки, пока она не сработает.

Смежные вопросы