python3 未捕获 gspread 异常
python3 gspread exception not caught
我有以下代码尝试捕获 gspread.exceptions.APIError,通常是 Google 电子表格凭据超时的结果。 _open_sheet 请求一组新的凭据。
def _findRow(self, entry):
''' Return row index for row which contains "entry". '''
for i in range(10):
try:
cell = self.worksheet.find(email)
return cell.row
except gspread.exceptions.CellNotFound:
return None
except gspread.exceptions.APIError:
# This occurs when we get a timeout of the authentication token
# Need to reauthenticate
self._open_sheet()
continue
print('Leadsheet:find:: Failed to renew authorization after 10 attempts.')
return None
并且从以下堆栈跟踪中未捕获 gspread.exceptions.APIError:
Traceback (most recent call last):
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/app/.heroku/python/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/app/app/api_1_0/views.py", line 79, in lead
statSheet.updateStats(config.leadsheetTile)
File "/app/app/statSheet.py", line 71, in updateStats
row = self._findRow(entry)
File "/app/app/statSheet.py", line 54, in _findRow
cell = self.worksheet.find(entry)
File "/app/.heroku/python/lib/python3.6/site-packages/gspread/models.py", line 805, in find
return self._finder(finditem, query)
File "/app/.heroku/python/lib/python3.6/site-packages/gspread/models.py", line 779, in _finder
data = self.spreadsheet.values_get(self.title)
File "/app/.heroku/python/lib/python3.6/site-packages/gspread/models.py", line 110, in values_get
r = self.client.request('get', url, params=params)
File "/app/.heroku/python/lib/python3.6/site-packages/gspread/client.py", line 79, in request
raise APIError(response)
gspread.exceptions.APIError: {
"error": {
"code": 401,
"message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
}
关于这段代码发生了什么的任何线索?
我遇到了同样的问题,有效的方法是:
except gspread.CellNotFound:
我在 excel sheet 中写入数据时发生了同样的情况,一段时间后出现此错误。
一旦我再次 运行 我的脚本它工作正常但一段时间后失败。
观察到的一件事是在写入数据时,如果它到达该行的末尾 sheet 并且没有更多的行可写,那么它就会开始抛出这样的错误。
所以你需要像下面这样捕获这个异常:
try:
Sheet.update_cell(row, column, value="What ever value")t_term)
except gspread.exceptions.APIError as UNAUTHENTICATED:
print("Api error occurred for gspread due to authentication failure while writing What ever value.")
我有以下代码尝试捕获 gspread.exceptions.APIError,通常是 Google 电子表格凭据超时的结果。 _open_sheet 请求一组新的凭据。
def _findRow(self, entry):
''' Return row index for row which contains "entry". '''
for i in range(10):
try:
cell = self.worksheet.find(email)
return cell.row
except gspread.exceptions.CellNotFound:
return None
except gspread.exceptions.APIError:
# This occurs when we get a timeout of the authentication token
# Need to reauthenticate
self._open_sheet()
continue
print('Leadsheet:find:: Failed to renew authorization after 10 attempts.')
return None
并且从以下堆栈跟踪中未捕获 gspread.exceptions.APIError:
Traceback (most recent call last):
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/app/.heroku/python/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/app/app/api_1_0/views.py", line 79, in lead
statSheet.updateStats(config.leadsheetTile)
File "/app/app/statSheet.py", line 71, in updateStats
row = self._findRow(entry)
File "/app/app/statSheet.py", line 54, in _findRow
cell = self.worksheet.find(entry)
File "/app/.heroku/python/lib/python3.6/site-packages/gspread/models.py", line 805, in find
return self._finder(finditem, query)
File "/app/.heroku/python/lib/python3.6/site-packages/gspread/models.py", line 779, in _finder
data = self.spreadsheet.values_get(self.title)
File "/app/.heroku/python/lib/python3.6/site-packages/gspread/models.py", line 110, in values_get
r = self.client.request('get', url, params=params)
File "/app/.heroku/python/lib/python3.6/site-packages/gspread/client.py", line 79, in request
raise APIError(response)
gspread.exceptions.APIError: {
"error": {
"code": 401,
"message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
}
关于这段代码发生了什么的任何线索?
我遇到了同样的问题,有效的方法是:
except gspread.CellNotFound:
我在 excel sheet 中写入数据时发生了同样的情况,一段时间后出现此错误。 一旦我再次 运行 我的脚本它工作正常但一段时间后失败。
观察到的一件事是在写入数据时,如果它到达该行的末尾 sheet 并且没有更多的行可写,那么它就会开始抛出这样的错误。
所以你需要像下面这样捕获这个异常:
try:
Sheet.update_cell(row, column, value="What ever value")t_term)
except gspread.exceptions.APIError as UNAUTHENTICATED:
print("Api error occurred for gspread due to authentication failure while writing What ever value.")