Python或Django:在没有内部服务器错误的情况下处理从导入库引发的异常
我创建了一个连接到某个远程JSON api的库。我有一个Django应用程序,如果我的库无法连接到资源(504错误),它将呈现一个内部服务器错误。下面是一个假设的示例,它显示了我的库代码的布局 mymodule.py view.py 是否有建议的方法提醒用户资源太忙?这比根据我当前的ajax请求呈现内部服务器错误要好Python或Django:在没有内部服务器错误的情况下处理从导入库引发的异常,python,django,exception,Python,Django,Exception,我创建了一个连接到某个远程JSON api的库。我有一个Django应用程序,如果我的库无法连接到资源(504错误),它将呈现一个内部服务器错误。下面是一个假设的示例,它显示了我的库代码的布局 mymodule.py view.py 是否有建议的方法提醒用户资源太忙?这比根据我当前的ajax请求呈现内部服务器错误要好 谢谢 解决了我的问题。我觉得自己很愚蠢,因为解决办法很简单。希望这能帮助将来遇到同样问题的人。如果导入库上的HTTP连接失败,可以避免呈现服务器错误页面,并为客户端生成友好的通知
谢谢 解决了我的问题。我觉得自己很愚蠢,因为解决办法很简单。希望这能帮助将来遇到同样问题的人。如果导入库上的HTTP连接失败,可以避免呈现服务器错误页面,并为客户端生成友好的通知 它只需要在导入的库中找到处理错误的类。在本例中,它被命名为“Error” 您可以而且可能应该对其进行自定义,以处理特定于引发的HTTPError的异常 干杯
...
class Error(Exception):
"""class placeholder for errors"""
class theObject(object):
@classmethod
def get(self, params = {}):
url = 'http://somewhere.com/collection.json%s' % (urlencode(params))
try:
response = unicode(urlopen(url).read(), 'utf8').decode()
dictionary = json.loads(response)
result = ApiObject(dictionary)
return result
except HTTPError, e:
raise Error(e.read())
except (ValueError, KeyError), e:
raise Error('Invalid Response')
class Person(theObject):
@classmethod
def get_person(cls, person_id):
params = {'id':person_id)
result = super(Stuff, cls).get(params)
return result
import mymodule
...
remote_result = module.Person.get_person(person_id=person)
...
import mymodule
try:
[do a bunch of things...]
except mymodule.Error:
error = "Remote servers appear to be busy. Please try again."
return HttpResponse(error)