Python或Django:在没有内部服务器错误的情况下处理从导入库引发的异常

Python或Django:在没有内部服务器错误的情况下处理从导入库引发的异常,python,django,exception,Python,Django,Exception,我创建了一个连接到某个远程JSON api的库。我有一个Django应用程序,如果我的库无法连接到资源(504错误),它将呈现一个内部服务器错误。下面是一个假设的示例,它显示了我的库代码的布局 mymodule.py view.py 是否有建议的方法提醒用户资源太忙?这比根据我当前的ajax请求呈现内部服务器错误要好 谢谢 解决了我的问题。我觉得自己很愚蠢,因为解决办法很简单。希望这能帮助将来遇到同样问题的人。如果导入库上的HTTP连接失败,可以避免呈现服务器错误页面,并为客户端生成友好的通知

我创建了一个连接到某个远程JSON api的库。我有一个Django应用程序,如果我的库无法连接到资源(504错误),它将呈现一个内部服务器错误。下面是一个假设的示例,它显示了我的库代码的布局

mymodule.py view.py 是否有建议的方法提醒用户资源太忙?这比根据我当前的ajax请求呈现内部服务器错误要好


谢谢

解决了我的问题。我觉得自己很愚蠢,因为解决办法很简单。希望这能帮助将来遇到同样问题的人。如果导入库上的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)