gspread的所有命令都发送请求?
此处错误 429 不会出现
gc = gs.service_account(filename="service_files/creds.json")
wks = gc.open_by_key("url have 35 list")
article = []
price = []
batch_data = wks.worksheets()
for data in batch_data:
article.extend(data.col_values(3))
price.extend(data.col_values(4))
print(article)
但是这里出现错误
gc = gs.service_account(filename="service_files/creds.json")
article = []
price = []
for i in range(1,35):
wks = gc.open_by_key("url have 35 list").get_worksheet(i)
article.extend(wks.col_values(3))
price.extend(wks.col_values(4))
print(article)
这是如何运作的? 在第一个示例中,我们发送一次请求,对吗? 在第二个示例中,我们发送请求 35 次,每个用户 35 个请求少于每个用户 60 个请求,是吗?
如果 col_values 发送请求怎么办,为什么第一个示例有效?
col_values
每次都会向服务器发送请求,如代码中所示。
此外,
open_by_key
使用get_sheet_metadata()
,这会进行另一个调用。
get_worksheet
好像也叫get_sheet_metadata
。这不会缓存在第一次调用 AFAICS 中。作者提供的推理是这里
因此,第二个代码中的总调用次数几乎翻倍:
功能 | 第一个代码 | 第二个代码 |
---|---|---|
col_values(3) | 35 | 35 |
col_values(4) | 35 | 35 |
通过键打开() | 1 | 35 |
工作表() | 1 | 0 |
获取工作表() | 0 | 35 |
总计 | 72 | 140 |
正如文档中所写,唯一批处理的相关调用似乎是
get()
、get_all_values()
和 batch_get()
:
https://docs.gspread.org/en/v6.1.3/user-guide.html#getting-all-values-from-a-row-or-a-column