如果运行失败,Python API客户端重新运行功能

时间:2015-12-15 15:16:09

标签: python python-requests

Python请求API客户端有一个如果运行失败则需要重新执行的函数。

Kitten(BaseClient):

    def create(self, **params):
        uri = self.BASE_URL
        data = dict(**(params or {}))
        r = self.client.post(uri, data=json.dumps(data))

        return r 

如果用

运行
api = Kitten()
data = {"email": "bill@dow.com", "currency": "USD", "country": "US"  } 

r = api.create(**data)

问题是每当你运行它时,它第一次总是以GET的形式返回请求,即使它是POST。第一次发送帖子时,它会返回GET条目列表。

后来的请求,第二次及以后,api.create(** data)返回创建的新条目。

有一个获取和发布的status_code

# GET
r.status_code == 200

# POST
r.status_code == 201

当status_code为200时,重复执行的Python方法会更好,直到返回有效的201.

1 个答案:

答案 0 :(得分:0)

如果您确定第二篇文章将始终返回您的预期值,您可以使用三元运算符再次执行检查:

Kitten(BaseClient):

    def create(self, **params):
        uri = self.BASE_URL
        data = dict(**(params or {}))
        r = self._get_response(uri, data)

        return r if r.status_code == 201 else self._get_response(uri, data)

    def _get_response(uri, data):
        return self.client.post(uri, data=json.dumps(data)

否则你可以把它放在一个while循环中,条件是状态代码== 201。