Почему я все еще получаю 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

(Просто заметил комментарии - значит, это действительно было решение, хорошо!)

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