Python API客户端在运行失败时重新运行函数
Python请求API客户端有一个函数,如果运行失败,需要重新执行该函数Python API客户端在运行失败时重新运行函数,python,python-requests,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(
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)返回按原样创建的新条目
get和post有一个状态代码
# GET
r.status_code == 200
# POST
r.status_code == 201
当状态代码为200时,有什么更好的Python方法可以重新执行,直到返回一个有效的201。如果您确定第二个post将始终返回您的期望值,您可以使用三元运算符再次执行检查:
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。如果您确定第二个post将始终返回您的期望值,则可以使用三元运算符再次执行检查:
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。暂时有效,将记住while循环用于later暂时有效,将记住while循环用于稍后