如何向 python 中的 Gmail-API 发送批量请求?

How do I send a batch request to the Gmail-API in python?

我目前正在编写一个与 Gmail 一起使用的小 python 脚本-API。我正在尝试向 gmail 服务器发送批处理请求。由于 gmail 用于发送批量请求的本机方法在 2020 年 8 月被贬值,我必须自己构建一个。它必须是 'multipart/mixed'.

的形式

根据文档,它必须如下所示 (https://developers.google.com/gmail/api/guides/batch):

我尝试使用 python 请求库,但它似乎只支持 'multipart/form' 形式的请求。但我不确定。

# A list with all the message-id's.
messages = tqdm(gmail.list_messages('me'))

gmailUrl = "https://gmail.googleapis.com/batch/gmail/v1"

request_header = {"Host": "www.googleapis.com", "Content-Type": "multipart/mixed", "boundary"="bound"}

request_body = ""

# I want to bundle 80 GET requests in one batch.
# I don't know how to proceed from here.
for n in range(0,80):


response = req.post(url=gmailUrl, auth=creds, headers=request_header, files=request_body)

print(response)

所以我的问题很简单:

如何将带有 python 的 http 请求发送到带有 'multipart/mixed'-form 的 Gmail-API。

提前致谢!

您可以将每个请求添加到批处理中,然后执行批处理。例如:

response = service.users().threads().list(userId="me").execute()
bt=service.new_batch_http_request()
for thread in threads:
    bt.add(service.users().threads().get(userId="me",id=thread["id"]))
bt.execute()

bt 对象现在将具有字段 _requests 和 _responses,您现在可以访问它们 - 这将需要一些字符串解析(我使用了 ast)。