Python或Django:handle从没有内部s的导入库中引发异常

2024-09-24 22:23:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在我的模块.py在

...
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

在视图.py在

^{pr2}$

有没有推荐的方法来提醒用户资源太忙了?这比从我当前的ajax请求中呈现一个内部服务器错误要好。在

谢谢!!在


Tags: py服务器idurlgetdef错误error
1条回答
网友
1楼 · 发布于 2024-09-24 22:23:26

解决了我的问题。我觉得很蠢,因为解决办法很简单。希望这能帮助将来遇到同样问题的人。如果导入的库上的HTTP连接失败,则可以避免呈现服务器错误页,并为客户端生成友好的通知。在

它只需要在导入的库中找到处理错误的类。在本例中,它被命名为“Error”

import mymodule
try:
    [do a bunch of things...] 

except mymodule.Error:  
    error = "Remote servers appear to be busy. Please try again."
    return HttpResponse(error)

您可以而且可能应该对其进行自定义,以处理特定于引发的HTTPError的异常。在

干杯!在

相关问题 更多 >