Flask 谷歌表单认证每隔几个小时左右就会过期一次

Flask 谷歌表单认证每隔几个小时左右就会过期一次,flask,google-apps-script,google-sheets,google-sheets-api,gspread,Flask,Google Apps Script,Google Sheets,Google Sheets Api,Gspread,我目前正在使用在web服务器上连续访问Google Sheets文档 它托管在Flask web服务器(ApacheWSGi)上,因此与Google的连接必须是连续的、持续的身份验证 我遇到了一个问题,几个小时后,我需要重新生成book对象(重新验证),否则我会遇到这个问题(请参见下文) 下面是我为解决这个问题所做的努力,但我仍然遇到同样的问题,我想知道你是否有任何想法 共有5-6个不同的工作表,我正在创建一个类,该类使用不同的方法来访问每个工作表(都是从Access继承的) 几小时后(4-24

我目前正在使用在web服务器上连续访问Google Sheets文档

它托管在Flask web服务器(ApacheWSGi)上,因此与Google的连接必须是连续的、持续的身份验证

我遇到了一个问题,几个小时后,我需要重新生成book对象(重新验证),否则我会遇到这个问题(请参见下文)

下面是我为解决这个问题所做的努力,但我仍然遇到同样的问题,我想知道你是否有任何想法

共有5-6个不同的工作表,我正在创建一个类,该类使用不同的方法来访问每个工作表(都是从Access继承的)

几小时后(4-24小时之间的任何时间),我将得到以下错误:

Traceback (most recent call last):
   File "/home/ve/lib/python3.4/site-packages/flask/app.py", line 2292, in wsgi_app
     response = self.full_dispatch_request()
   File "/home/ve/lib/python3.4/site-packages/flask/app.py", line 1815, in full_dispatch_request
     rv = self.handle_user_exception(e)
   File "/home/ve/lib/python3.4/site-packages/flask/app.py", line 1718, in handle_user_exception
     reraise(exc_type, exc_value, tb)
   File "/home/ve/lib/python3.4/site-packages/flask/_compat.py", line 35, in reraise
     raise value
   File "/home/ve/lib/python3.4/site-packages/flask/app.py", line 1813, in full_dispatch_request
     rv = self.dispatch_request()
   File "/home/ve/lib/python3.4/site-packages/flask/app.py", line 1799, in dispatch_request
     return self.view_functions[rule.endpoint](**req.view_args)
   File "/var/www/clocker/clocker/routes.py", line 43, in voice
     clocked_in = clock.is_clocked_in(id)
   File "/var/www/clocker/clocker/sheet_access.py", line 115, in is_clocked_in
     latest_clock_in = self.get_latest_clock_in(id)
   File "/var/www/clocker/clocker/sheet_access.py", line 107, in get_latest_clock_in
     result = self.sheet.findall(str(id))
   File "/home/ve/lib/python3.4/site-packages/gspread/models.py", line 814, in findall
     return list(self._finder(filter, query))
   File "/home/ve/lib/python3.4/site-packages/gspread/models.py", line 779, in _finder
     data = self.spreadsheet.values_get(self.title)
   File "/home/ve/lib/python3.4/site-packages/gspread/models.py", line 110, in values_get
     r = self.client.request('get', url, params=params)
   File "/home/ve/lib/python3.4/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"
   }
 }
几乎每次只要重新启动服务器就可以解决这个问题


重新生成book对象似乎无法解决问题,我已检查过该书的
id
是否每40分钟更改一次。

如果我理解正确,在我的使用中,我会按住
gc
并调用
book=gc。需要数据时按键打开(SHEET\u key)

基本上,不是将
book
保存为全局变量,而是保存
gc
,以便保留先前经过身份验证的会话并用于进一步的请求

Traceback (most recent call last):
   File "/home/ve/lib/python3.4/site-packages/flask/app.py", line 2292, in wsgi_app
     response = self.full_dispatch_request()
   File "/home/ve/lib/python3.4/site-packages/flask/app.py", line 1815, in full_dispatch_request
     rv = self.handle_user_exception(e)
   File "/home/ve/lib/python3.4/site-packages/flask/app.py", line 1718, in handle_user_exception
     reraise(exc_type, exc_value, tb)
   File "/home/ve/lib/python3.4/site-packages/flask/_compat.py", line 35, in reraise
     raise value
   File "/home/ve/lib/python3.4/site-packages/flask/app.py", line 1813, in full_dispatch_request
     rv = self.dispatch_request()
   File "/home/ve/lib/python3.4/site-packages/flask/app.py", line 1799, in dispatch_request
     return self.view_functions[rule.endpoint](**req.view_args)
   File "/var/www/clocker/clocker/routes.py", line 43, in voice
     clocked_in = clock.is_clocked_in(id)
   File "/var/www/clocker/clocker/sheet_access.py", line 115, in is_clocked_in
     latest_clock_in = self.get_latest_clock_in(id)
   File "/var/www/clocker/clocker/sheet_access.py", line 107, in get_latest_clock_in
     result = self.sheet.findall(str(id))
   File "/home/ve/lib/python3.4/site-packages/gspread/models.py", line 814, in findall
     return list(self._finder(filter, query))
   File "/home/ve/lib/python3.4/site-packages/gspread/models.py", line 779, in _finder
     data = self.spreadsheet.values_get(self.title)
   File "/home/ve/lib/python3.4/site-packages/gspread/models.py", line 110, in values_get
     r = self.client.request('get', url, params=params)
   File "/home/ve/lib/python3.4/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"
   }
 }