如何在gspread的authorize方法中使用BackoffClient避配额超限?参数报错求助
解决方案:使用BackoffClient避免gspread配额超限错误
你遇到的错误是因为gspread.authorize()方法并不支持client_factory这个参数,正确的做法是直接实例化BackoffClient并完成授权,以下是两种可行的实现方式:
方式一:基于已有的凭据对象创建BackoffClient
保留你原本的凭据创建逻辑,通过授权后的HTTP对象初始化BackoffClient:
import httplib2 import gspread from oauth2client.service_account import ServiceAccountCredentials scope = ["https://spreadsheets.google.com/feeds", 'https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive"] creds = ServiceAccountCredentials.from_json_keyfile_name("credentials_g4a.json", scope) # 获取授权后的HTTP客户端 authorized_http = creds.authorize(httplib2.Http()) # 初始化BackoffClient client = gspread.client.BackoffClient(auth=authorized_http)
方式二:直接通过BackoffClient的类方法创建(更简洁)
跳过单独创建凭据的步骤,直接用BackoffClient的from_service_account_json方法完成初始化与授权:
import gspread scope = ["https://spreadsheets.google.com/feeds", 'https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive"] client = gspread.BackoffClient.from_service_account_json( "credentials_g4a.json", scopes=scope )
额外注意事项
- 确保你的gspread版本是最新的,旧版本可能没有
BackoffClient类,执行以下命令升级:pip install --upgrade gspread BackoffClient会自动在请求遇到配额限制时进行指数退重,无需额外配置即可缓解超限问题。
内容的提问来源于stack exchange,提问作者Vikram Aruchamy
相关产品推荐
相关产品推荐

