python - Locust - 重试某些状态码,但默认处理所有其他状态码
问题描述
如果我的访问令牌过期,我有一个 Locust 任务可能会以 401 告终。在这种情况下,我将更新它,然后重试该任务。这一切都很好(基于this):
@task
def list_claims(self):
with self.client.get("/api/1.0/claim/", name="LIST claims", headers=self.headers, catch_response=True) as response:
if response.status_code == 401:
logging.info("401 - Need to fetch a new access token!") # usually happens when the access tokens expires after an hour
self.aad_b2c_auth()
raise RescheduleTaskImmediately() # re-run this task with the newly refreshed token
问题是这似乎吸收了所有其他状态代码,所以任务永远不会显示为失败,即使它,例如,返回 503 等。我认为这是因为catch_response=True
?!所以理想情况下,我只想对 401 进行特殊处理,并将其余部分留给默认处理程序(2xx = 成功,4xx/5xx = 失败)。有没有内置的方法来实现这一点?
解决方案
推荐阅读
- html - 如何让汉堡图标顺滑跟随浏览器?
- pytorch - Pytorch 自动混合精度(amp)在批次中向后变慢
- python - 带有查询结果和计算数据的 Django 表
- javascript - 我对递归在 js 中的工作方式感到困惑。下面的例子
- ios - 让嵌套 CloudKit 查询中的警告使 var 永远不会改变
- ios - 除非点击操作项来更改状态,否则列表不会填充下一项
- reactjs - Nextjs - 错误:对象作为 React 子项无效(找到:[object Promise])
- exchange-basicauth - Exchange Online:基本身份验证和没有 MFA 的现代身份验证有什么区别
- android - 音乐应用android studio中最喜欢的歌曲功能
- ios - swift:如何在邮件文本中将字体更改为 Courier?