Почему я все еще получаю HTTPError, несмотря на его исключение?
Я импортировал и исключил HTTPError в своем коде, но моя программа останавливается, когда он появляется. Я не уверен, что мне нужно делать. Ошибка в том, что я использую свои 100-секундные листы Google для чтения api-квоты, в то время как я подал заявку на более высокий лимит, у меня неограниченный дневной лимит и за пределами 100-секундного лимита, я могу повторить тот же код, и он будет Работа. Поэтому я хочу, чтобы мой код повторил попытку после простой задержки. Тем не менее, мой текущий код останавливается с исключением. Что мне здесь не хватает?
Код:
from urllib2 import HTTPError
import MySQLdb
import pandas as pd
import gspread
import datetime
from oauth2client.service_account import ServiceAccountCredentials
import redis
import requests
import pygsheets
import json
import decimal
import time
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
gc2 = pygsheets.authorize(service_file='XXXXXXXXXXXXXXXXXXXXXX.json')
ss2 = gc2.open_by_key('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
worksheets = ss2.worksheets()
Control = 'ON'
while(Control=='ON'):
redishost='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXaws.com'
r = redis.Redis(host=redishost, port=XXXX, db=0)
for wkst in worksheets:
if wkst.title == 'Log' or wkst.title == 'Control':
pass
else:
url_done = True
while(url_done):
try:
print "worksheet: {}".format(wkst.title)
bid_val = wkst.get_value('O2')
if bid_val:
r.hmset("plcmnt:{}".format(wkst.get_value('I2')),{wkst.get_value('J2'):int(bid_val)})
wkst.update_cell('P2',datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
wkst.update_cell('Q2',r.hget("plcmnt:{}".format(wkst.get_value('I2')),"{}".format(wkst.get_value('J2'))))
wkst.update_cell('R2',datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
print "completed at {}".format(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
url_done = False
except HTTPError as err:
print err
print "failed updating sheet: '{}'".format(wkst.title)
print "retrying in 10 seconds"
time.sleep(10)
url_done = True
Control = 'OFF'
print "Control is {} at {}".format(Control,datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
Ошибка:
File "URL_Bid_Setter.py", line 39, in <module>
wkst.update_cell('Q2',r.hget("plcmnt:{}".format(wkst.get_value('I2')),"{}".format(wkst.get_value('J2'))))
File "/usr/local/lib/python2.7/dist-packages/pygsheets/worksheet.py", line 212, in get_value
return self.get_values(addr, addr, include_empty=False)[0][0]
File "/usr/local/lib/python2.7/dist-packages/pygsheets/worksheet.py", line 242, in get_values
value_render=value_render)
File "/usr/local/lib/python2.7/dist-packages/pygsheets/client.py", line 323, in get_range
result = self._execute_request(spreadsheet_id, request, False)
File "/usr/local/lib/python2.7/dist-packages/pygsheets/client.py", line 418, in _execute_request
response = request.execute()
File "/usr/local/lib/python2.7/dist-packages/oauth2client/_helpers.py", line 133, in positional_wrapper
return wrapped(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/googleapiclient/http.py", line 844, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 429 when requesting https://sheets.googleapis.com/v4/spreadsheets/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/values/6326%3Angoisao.vn%21I2%3AI2?valueRenderOption=FORMATTED_VALUE&alt=json&majorDimension=ROWS returned "Insufficient tokens for quota 'ReadGroup' and limit 'USER-100s' of service 'sheets.googleapis.com' for consumer 'project_number:XXXXXXXXXXXX'.">
Помощь приветствуется.
1 ответ
Возможно, класс Google
googleapiclient.errors.HttpError
не связано с исключением
urllib2.HTTPError
(Просто заметил комментарии - значит, это действительно было решение, хорошо!)