#python #python-3.x #gmail #gmail-api
Вопрос:
Я сталкиваюсь со следующей ошибкой при выполнении batch.add() с запросом API Gmail.
Ошибка:
if request.resumable is not None:
AttributeError: 'dict' object has no attribute 'resumable'
for searchResultPart in searchResultParts:
batch = BatchHttpRequest()
batch2 = BatchHttpRequest()
for msgID in searchResultPart: #Loop through each messageID
request1 = service.users().messages().get(userId=userID, id=msgID).execute()
request1.update({"resumable" : None}) #TRIED THIS DOES NOT WORK
request2 = service.users().messages().modify(userId=userID, id=msgID, body={'removeLabelIds': ['UNREAD']}).execute()
batch.add(request=request1,request_id=msgID) #Fetch the message
batch2.add(request=request2,request_id=msgID) #Mark the fetched messages as read
batch.execute()
batch2.execute()
Я попытался добавить ключ : request1[«возобновляемый»] = Нет
Я попытался добавить атрибут : request1.возобновляемый = Нет
Я пытался искать другие решения, но я застрял. Что я могу сделать, чтобы решить эту проблему?
Ошибка, которую я вижу, возникает во время batch.add(запрос=request1,request_id=msgID).
Насколько я понимаю, причина, по которой это происходит, заключается в том, что вы не можете извлекать полезные нагрузки с помощью пакетной обработки. Таким образом, пакетирование ожидает, что возобновляемое будет неназначено без назначения.
Комментарии:
1. Итак, проблема заключалась в .execute() в конце.
Ответ №1:
for searchResultPart in searchResultParts:
batch = BatchHttpRequest()
batch2 = BatchHttpRequest()
for msgID in searchResultPart: #Loop through each messageID
request1 = service.users().messages().get(userId=userID,id=msgID)
body = {'removeLabelIds': ['UNREAD']}
request2 = service.users().messages().modify(userId=userID, id=msgID, body=body)
batch.add(request=request1, callback=self.theEmailCallback,request_id=msgID) #Fetch the message
batch2.add(request=request2,request_id=msgID) #Mark the fetched messages as read
batch.execute()
batch2.execute()
Обратите внимание, что это то же самое, за исключением того, что я удалил .execute() из запросов 1 и 2. Теперь я больше не получаю эту ошибку.