python requests response值判断方式
这段时间在技术上没太多的思考的,只是碰到几个虾米小问题。往往问题不大,也会致使你花心思去排解。
今遇到一个reqeusts返回值的一个问题,花了不短时间调,后来发现是reqeusts返回的对象也含有魔法函数处理。
我这边的业务是cdn的刷新预缓存,对于该项目来说httpcode200,2xx,404都是友好的。
#jb51.net importrequests r=None try: r=requests.get("https://jb51.net") except: pass ifr: print"ok"
为什么没有输出ok?按照常理来说,只要r不为零值,就可以匹配到True.但这次的返回是
>type(r)
>requests.models.Response
看requests的源代码可以很容易分析出该问题。
#jb51.net classResponse(object): """The:class:`Response`object,whichcontainsa server'sresponsetoanHTTPrequest. """ __attrs__=[ '_content','status_code','headers','url','history', 'encoding','reason','cookies','elapsed','request' ] def__init__(self): super(Response,self).__init__() self._content=False self._content_consumed=False #:IntegerCodeofrespondedHTTPStatus,e.g.404or200. self.status_code=None def__repr__(self): return' '%(self.status_code) def__bool__(self): returnself.ok @property defok(self): try: self.raise_for_status() exceptHTTPError: returnFalse returnTrue defraise_for_status(self): ¦"""Raisesstored:class:`HTTPError`,ifoneoccurred.""" ¦http_error_msg='' ¦if400<=self.status_code<500: ¦¦http_error_msg='%sClientError:%sforurl:%s'%(self.status_code,self.reason,self.url) ¦elif500<=self.status_code<600: ¦¦http_error_msg='%sServerError:%sforurl:%s'%(self.status_code,self.reason,self.url) ¦ifhttp_error_msg: ¦¦raiseHTTPError(http_error_msg,response=self)
END.
以上这篇pythonrequestsresponse值判断方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。