Định tuyến proxy trong gspread 6 cho lệnh gọi API và làm mới token
Cấp cho gspread một phiên được ủy quyền hiểu proxy và cấu hình transport riêng dùng để làm mới thông tin xác thực Google.
Cấu hình cả phiên API được ủy quyền của gspread và transport của yêu cầu làm mới thông tin xác thực khi một trong hai cần proxy:
import requests
import gspread
from google.auth.transport.requests import AuthorizedSession, Request
routes = {
'http': 'http://proxy.example:8080',
'https': 'http://proxy.example:8080',
}
token_session = requests.Session()
token_session.proxies.update(routes)
session = AuthorizedSession(
credentials,
auth_request=Request(session=token_session),
)
session.proxies.update(routes)
client = gspread.Client(auth=credentials, session=session)Đoạn mã này dùng giao diện Client của gspread 6 với một phiên được truyền vào và thông tin xác thực sẵn có của ứng dụng. Nó cấu hình transport, không phải quyền của bảng tính hay phạm vi OAuth. Với các điểm cuối API và token công khai trên một tuyến công khai được phép, hãy chọn một ứng viên HTTP chưa xác thực từ danh sách proxy HTTP cho bản đồ tuyến. Giữ cả hai phiên không chứa bất kỳ tài khoản proxy nào được lưu khi thay đổi trung gian.
AuthorizedSession thêm thông tin xác thực vào các yêu cầu API và có thể làm mới chúng. Không có auth_request, google-auth có thể tạo một phiên Requests khác cho lưu lượng đó. Các giá trị mặc định proxy trên phiên được ủy quyền không cấu hình phiên được tạo độc lập.
Bộ điều hợp Request ở trên cố ý cung cấp tuyến thứ hai đó. Giữ cả hai phiên trong khi sử dụng, sau đó đóng các phiên thuộc sở hữu bên ngoài ở cuối phạm vi ứng dụng của chúng.
Đây là các giá trị mặc định của Session, nên việc hợp nhất môi trường của Requests vẫn có thể ảnh hưởng đến chúng. Hãy tính đến các đầu vào proxy được kế thừa khi cần một tuyến cố định.
Dùng URL bị lỗi để phân biệt việc bảng tính từ chối, thử thách proxy và lỗi của điểm cuối thông tin xác thực. Một token truy cập được lưu trong bộ nhớ đệm có thể khiến các lệnh gọi API thành công mà không thực hiện lần làm mới nào.