You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Locust时报AttributeError: MyApiTask类无task_set属性如何解决

问题排查与解决方案

核心错误原因

1. TaskSet初始化方法覆写错误

你自定义的MyApiTask覆写了__init__方法,但不符合Locust框架的参数要求:TaskSet父类初始化需要传入关联的用户实例作为参数,你写的无参__init__以及错误的传参super().__init__(self),导致TaskSet内部的任务相关属性没有正确挂载,最终触发属性不存在的报错。

2. 版本不兼容的API调用

Locust 1.0及以上版本已经弃用HttpLocust类,替换为HttpUser类,旧API在新版本中运行会出现属性不匹配问题。

修复方案

方案1:保留TaskSet写法(适配全版本)

直接删除多余的自定义__init__方法,同时根据Locust版本调整用户类名即可:

from locust import TaskSet, task, HttpUser, between
from assertpy import assert_that

class MyApiTask(TaskSet):
    @task(1)
    def get_response(self):
        response  = self.client.get("/")
        print(response.json())
        assert_that(200).is_equal_to(response.status_code)

# Locust 1.x及以上版本用HttpUser,0.x旧版本替换为HttpLocust即可
class MyApiUser(HttpUser):
    task_set = MyApiTask
    wait_time = between(1,2)

如果确实需要自定义TaskSet初始化逻辑,按规范写参数即可:

class MyApiTask(TaskSet):
    def __init__(self, parent):
        super().__init__(parent)
        # 此处添加自定义初始化逻辑

方案2:新版Locust简化写法(1.x及以上版本推荐)

不需要额外定义TaskSet,直接把任务方法写在User类中,代码更简洁:

from locust import task, HttpUser, between
from assertpy import assert_that

class MyApiUser(HttpUser):
    wait_time = between(1,2)
    
    @task(1)
    def get_response(self):
        response  = self.client.get("/")
        print(response.json())
        assert_that(200).is_equal_to(response.status_code)

内容的提问来源于stack exchange,提问作者darthsithius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 19:54:07