Электронная таблица Google на Python, поддерживающая связь

Я обновляю свои таблицы, используя gspreadПроцесс занимает около часа, у меня около 200 таблиц. Кажется, около 30 минут на обновление листов, соединение падает. Есть ли способ сохранить логин? Я думал, что поддерживаю связь, потому что я открываю и пишу на разные листы примерно каждые 30 секунд.

Я могу использовать try Заявление и, если это бомбы, войдите в систему. Мне было интересно, если кто-нибудь есть лучший способ?

Я привык использовать простой пример из gspread пример:

gc = gspread.login('thedude@abid.es', 'password')
sht1 = gc.open_by_key('0BmgG6nO_6dprdS1MN3d3MkdPa142WFRrdnRRUWl1UFE')

Как я могу превратить это в логин соединения с поддержкой активности, чтобы получить sht1?

1 ответ

Решение

Для поддержания живого соединения вы должны использовать постоянное соединение.

Итак, если вы проверите основной документ:

http://burnash.github.io/gspread/

Вы увидите gspread.login метод является экземпляром Client, а также Client может принять http заголовки.

http://burnash.github.io/gspread/

Теперь добавьте этот заголовок в ваше соединение: Connection: Keep-Alive

import gspread
headers = gspread.httpsession.HTTPSession(headers={'Connection':'Keep-Alive'})
con = gspread.Client(auth=('you@gmail.com','password'),http_session=headers)
con.login()
con.open_by_key('....')

Затем, когда вы получите печать заголовков сессии:

print con.session.headers
Out[5]: {'Authorization': u'GoogleLogin auth=xxxxxxx', 'Connection': 'Keep-Alive'}

Для получения подробной информации о подключении просмотрите следующие ссылки:

http://en.wikipedia.org/wiki/HTTP_persistent_connection

http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html

Для получения подробной информации о кодах gspread httpsession взглянуть на:

https://github.com/burnash/gspread/blob/master/gspread/httpsession.py

Другие вопросы по тегам