2016-03-22 22 views
1

Ich versuche eine App in Python zu schreiben, damit Benutzer ihre LISTSERV-Archive für unsere Domain zu Google Groups migrieren können. Beim Versuch, archive.insert (https://developers.google.com/admin-sdk/groups-migration/v1/reference/archive/insert) aufzurufen, erhalte ich einen HttpError 500 "Backend Error".500 "Backend-Fehler" bei Verwendung der Google Groups-Migrations-API

ich im Archiv lese etwa so:

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

Wenn durch die resultierenden Nachrichten im mbox Objekt iterieren, den Aufruf der .as_string() Funktion Ergebnisse in etwa wie folgt:

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. 

Einige Fragen hier erwähnen die Vermeidung von Backend-Fehlern, indem sichergestellt wird, dass die Nachrichten-ID im richtigen Format ist. Nachricht ['Message-ID'] für diese bestimmte Nachricht führt jedoch zu < [email protected]>, so bin ich nicht sicher Message-ID ist das Problem hier.

Ich versuche Einsatz zu nennen wie so:

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() 

Irgendwelche Ideen? Vielen Dank im Voraus :)

UPDATE

Jay Vorschlag in den Kommentaren nach, ich habe eingestellt httplib2.debuglevel = 1. Hier ist das Ergebnis in meinem Logs zu versuchen, die gleiche E-Mail zu migrieren:

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 (mit Lösung)

Es stellt sich heraus, das ein Berechtigungsproblem war: Wenn man sich die domänenweite Dienstkonto Route, achten Sie darauf, den Benutzer, der die Gruppe besitzt, zu imitieren. FWIW, IMHO, die Fehlermeldungen für die Gruppen-Migrations-API müssen etwas expliziter sein, was das Problem ist. "Backend Error" ist schrecklich generisch. Das herauszufinden war, als würde man mit einem Stock auf das Problem stoßen, bis es funktioniert.

+0

Wird der Fehler 500 immer zurückgegeben? In der Regel Backend-Fehler bedeutet, versuchen Sie es erneut in ein paar Sekunden (Google für exponentielle Backoff für weitere Details). –

+0

Jay - Danke für deine schnelle Antwort! Ja - der Fehler tritt jedes Mal auf (Ich umgehe den Ausführungsaufruf in einer Funktion, die mehrmals mit einem exponentiellen Backoff wiederholt wird). –

+0

Das führt zu der Annahme, dass es bei den LISTSERV-Archiven, die ich erhalte, zu einer Art String/Dateicodierung kommen könnte (seltsamerweise habe ich versucht, die Beispiel-E-Mail von [Googles Verwaltung von E-Mail-Migrationen] (https://developers.google .com/admin-sdk/groups-migration/v1/guides/manage-email-migrationen # managing_migrations) dokument statt einer unserer eigenen massierten LISTSERV-Archivdateien und hatte den gleichen Fehler 500), oder vielleicht gibt es ein Konfigurationsproblem auf meinem Ende. –

Antwort

1

Es stellt sich heraus, dass es sich um ein Berechtigungsproblem handelte: Wenn Sie die domänenweite Dienstkontoroute ausführen, stellen Sie sicher, dass Sie sich als Benutzer der Gruppe ausgeben. FWIW, IMHO, die Fehlermeldungen für die Gruppen-Migrations-API müssen etwas expliziter sein, was das Problem ist. "Backend Error" ist schrecklich generisch. Das herauszufinden war, als würde man mit einem Stock auf das Problem stoßen, bis es funktioniert.

Verwandte Themen