gpt4 book ai didi

python - 谷歌应用引擎/驱动 SDK : catching a lot HTTP Deadline exceptions

转载 作者:太空狗 更新时间:2023-10-30 01:34:36 24 4
gpt4 key购买 nike

我们的应用部署在 Google App Engine、Python 运行时 (2.7) 上,并使用 Drive API。它越来越多地捕获 HTTPException 因为超过了截止日期,在不同的端点(驱动器、OAuth 等)

我们已经实现了 5 次尝试的指数退避机制。我们的应用程序越来越多地达到这个限制(例如,今天早上我们遇到了很多这样的异常)。

这个问题的根源可能是什么?是否可以增加超时延迟?

感谢您的帮助。

这是一个完整的堆栈跟踪(OAuth2 API):

2013-06-07 21:11:10,851 ERROR An error occurred : Deadline exceeded while waiting for HTTP response from URL: https://accounts.google.com/o/oauth2/token
Traceback (most recent call last):
File "/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 545, in dispatch
return method(*args, **kwargs)
File "/base/data/home/apps/s~unishared-gae/production.367909734400765242/main.py", line 733, in get
creds = self.GetCodeCredentials() or self.GetSessionCredentials()
File "/base/data/home/apps/s~unishared-gae/production.367909734400765242/main.py", line 301, in GetCodeCredentials
creds = oauth_flow.step2_exchange(code)
File "lib/oauth2client/util.py", line 128, in positional_wrapper
return wrapped(*args, **kwargs)
File "lib/oauth2client/client.py", line 1283, in step2_exchange
headers=headers)
File "lib/httplib2/__init__.py", line 1570, in request
(response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "lib/httplib2/__init__.py", line 1317, in _request
(response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "lib/httplib2/__init__.py", line 1286, in _conn_request
response = conn.getresponse()
File "/python27_runtime/python27_dist/lib/python2.7/httplib.py", line 500, in getresponse
raise HTTPException(str(e))

最佳答案

This 2011 年发布的博客文章讨论了如何使用元类而不是使用装饰器来捕获 DeadlineExceededError。我不确定这是否会指导或解决您的问题,但会为您提供一个可能有用的想法。

from google.appengine.api import mail
from google.appengine.ext.deferred import defer
from google.appengine.ext.webapp import RequestHandler
from google.appengine.runtime import DeadlineExceededError
import sys
from traceback import format_exception
from SOME_APP_SPECIFIC_LIBRARY import serve_500
from LAST_POST import email_admins

class DecorateHttpVerbsMetaclass(type):

def __new__(cls, name, bases, cls_attr):
verbs = ['get', 'post', 'put', 'delete']
for verb in verbs:
if verb in cls_attr and isinstance(cls_attr[verb], function):
cls_attr[verb] = deadline_decorator(cls_attr[verb])

return super(DecorateHttpVerbsMetaclass, cls).__new__(cls, name,
bases, cls_attr)

class ExtendedHandler(RequestHandler):
__metaclass__ = DecorateHttpVerbsMetaclass

def handle_exception(self, exception, debug_mode):
traceback_info = ''.join(format_exception(*sys.exc_info()))
email_admins(traceback_info, defer_now=True)

serve_500(self)

关于python - 谷歌应用引擎/驱动 SDK : catching a lot HTTP Deadline exceptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16993204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com