【发布时间】:2021-08-11 22:40:51
【问题描述】:
我目前正在编写一个与 Gmail-API 配合使用的小型 Python 脚本。我正在尝试向 gmail 服务器发送批处理请求。由于 gmail 发送批处理请求的本机方法在 2020 年 8 月贬值,我必须自己构建一个。它必须是“多部分/混合”的形式。
根据文档,它必须看起来像这样 (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 向具有“multipart/mixed”形式的 Gmail-API 发送 http 请求。
提前致谢!
【问题讨论】:
-
为什么要批量处理请求?您知道您将要做的就是为自己节省一些 HTTP 流量,对吗?以换取尝试使用 Google API 进行批处理的挫败感。
-
我正在使用 api 来实现其他功能。但是发送这么多 http 请求(并再次接收它们)似乎需要更长的时间。
-
祝你好运,这可能会有所帮助,但它可能不会因为批处理端点自发布此答案以来发生了变化,但这是我唯一能找到的 stackoverflow.com/q/27650927/1841839。它是一个免费的 API,你得到你所支付的。仅供参考,在必须处理的请求数量相同的情况下,批处理不会加快任何速度或提高您的配额。
-
谢谢。我现在正在搜索几个小时(并且发现了很多你评论过的线程)。基本上问题似乎只是我不知道如何正确发送请求。
-
我使用 Google API 已经有十年了,大约七年前我放弃了批处理。我发现它不值得它试图让它工作而造成的挫败感。我不是 Python 开发人员,所以我帮不上什么忙。首先尝试使用获取请求进行批处理,然后尝试使用您的发送邮件。我确实认为您在发送时可能会遇到问题,因为它可能看起来像是向 Google 发送垃圾邮件,请确保您使用虚拟帐户进行测试,以防您被锁定。
标签: python google-api gmail gmail-api google-api-python-client