API ਕਾਲਾਂ ਅਤੇ ਟੋਕਨ ਰੀਫ੍ਰੈਸ਼ ਲਈ gspread 6 ਪ੍ਰੌਕਸੀ ਰੂਟਿੰਗ
gspread ਨੂੰ ਪ੍ਰੌਕਸੀ-ਜਾਣੂ ਅਧਿਕ੍ਰਿਤ ਸੈਸ਼ਨ ਦਿਓ ਅਤੇ Google ਪ੍ਰਮਾਣ-ਪੱਤਰ ਰੀਫ੍ਰੈਸ਼ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ ਵੱਖਰਾ ਟਰਾਂਸਪੋਰਟ ਕਨਫਿਗਰ ਕਰੋ।
ਜਦੋਂ ਦੋਵਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਨੂੰ ਪ੍ਰੌਕਸੀ ਚਾਹੀਦਾ ਹੈ, ਤਦ gspread ਦਾ ਅਧਿਕ੍ਰਿਤ API ਸੈਸ਼ਨ ਅਤੇ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਰੀਫ੍ਰੈਸ਼ ਬੇਨਤੀ ਦਾ ਟਰਾਂਸਪੋਰਟ ਦੋਵੇਂ ਕਨਫਿਗਰ ਕਰੋ:
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)ਇਹ gspread 6 ਦਾ Client ਇੰਟਰਫੇਸ ਦਿੱਤੇ ਸੈਸ਼ਨ ਅਤੇ ਐਪ ਦੇ ਮੌਜੂਦਾ ਪ੍ਰਮਾਣ-ਪੱਤਰਾਂ ਨਾਲ ਵਰਤਦਾ ਹੈ। ਇਹ ਟਰਾਂਸਪੋਰਟ ਕਨਫਿਗਰ ਕਰਦਾ ਹੈ, ਸਪ੍ਰੈਡਸ਼ੀਟ ਇਜਾਜ਼ਤਾਂ ਜਾਂ OAuth ਸਕੋਪ ਨਹੀਂ। ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਜਨਤਕ ਰਸਤੇ ਉੱਤੇ ਜਨਤਕ API ਅਤੇ ਟੋਕਨ ਐਂਡਪੌਇੰਟ ਲਈ ਰੂਟ ਨਕਸ਼ੇ ਵਾਸਤੇ HTTP ਪ੍ਰੌਕਸੀ ਸੂਚੀ ਵਿੱਚੋਂ ਗੈਰ-ਪ੍ਰਮਾਣਿਤ HTTP ਉਮੀਦਵਾਰ ਚੁਣੋ। ਵਿਚੋਲਾ ਬਦਲਦਿਆਂ ਦੋਵੇਂ ਸੈਸ਼ਨਾਂ ਨੂੰ ਕਿਸੇ ਵੀ ਸੰਭਾਲੇ ਪ੍ਰੌਕਸੀ ਖਾਤੇ ਤੋਂ ਮੁਕਤ ਰੱਖੋ।
AuthorizedSession API ਬੇਨਤੀਆਂ ਵਿੱਚ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਜੋੜਦਾ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਰੀਫ੍ਰੈਸ਼ ਕਰ ਸਕਦਾ ਹੈ। auth_request ਤੋਂ ਬਿਨਾਂ google-auth ਉਸ ਟ੍ਰੈਫਿਕ ਲਈ ਇੱਕ ਹੋਰ Requests ਸੈਸ਼ਨ ਬਣਾ ਸਕਦਾ ਹੈ। ਅਧਿਕ੍ਰਿਤ ਸੈਸ਼ਨ ਉੱਤੇ ਪ੍ਰੌਕਸੀ ਡਿਫੌਲਟ ਸੁਤੰਤਰ ਤੌਰ ਉੱਤੇ ਬਣਾਏ ਸੈਸ਼ਨ ਨੂੰ ਕਨਫਿਗਰ ਨਹੀਂ ਕਰਦੇ।
ਉੱਪਰਲਾ Request ਅਡੈਪਟਰ ਉਹ ਦੂਜਾ ਰਸਤਾ ਜਾਣ-ਬੁੱਝ ਕੇ ਦਿੰਦਾ ਹੈ। ਵਰਤੋਂ ਦੌਰਾਨ ਦੋਵੇਂ ਸੈਸ਼ਨ ਰੱਖੋ, ਫਿਰ ਆਪਣੇ ਐਪਲੀਕੇਸ਼ਨ ਦਾਇਰੇ ਦੇ ਅੰਤ ਵਿੱਚ ਬਾਹਰੀ ਮਾਲਕੀ ਵਾਲੇ ਸੈਸ਼ਨ ਬੰਦ ਕਰੋ।
ਇਹ Session ਡਿਫੌਲਟ ਹਨ, ਇਸ ਲਈ Requests ਵਾਤਾਵਰਣ ਦਾ ਮਿਲਾਪ ਅਜੇ ਵੀ ਉਹਨਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦਾ ਹੈ। ਜਦੋਂ ਸਥਿਰ ਰਸਤਾ ਲੋੜੀਂਦਾ ਹੋਵੇ ਤਾਂ ਵਿਰਾਸਤੀ ਪ੍ਰੌਕਸੀ ਇਨਪੁਟ ਦਾ ਧਿਆਨ ਰੱਖੋ।
ਅਸਫਲ URL ਵਰਤ ਕੇ ਸਪ੍ਰੈਡਸ਼ੀਟ ਦੀ ਨਾਂਹ, ਪ੍ਰੌਕਸੀ ਚੁਣੌਤੀ ਅਤੇ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਐਂਡਪੌਇੰਟ ਦੀ ਖਰਾਬੀ ਵੱਖ ਕਰੋ। ਕੈਸ਼ ਕੀਤਾ ਐਕਸੈਸ ਟੋਕਨ API ਕਾਲਾਂ ਨੂੰ ਬਿਨਾਂ ਕੋਈ ਰੀਫ੍ਰੈਸ਼ ਕੀਤੇ ਸਫਲ ਬਣਾ ਸਕਦਾ ਹੈ।