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

添加Locust库后TeamCity构建失败:递归错误与Socket异常排查

问题描述

我在Python项目中引入了Locust 2.12.1用于API性能测试,本地运行正常,但在TeamCity构建环境中,将Locust加入requirements.txt后,所有其他测试用例全部失败;移除Locust库及其实现代码后,所有测试用例恢复正常。显然Locust在深层影响了其他依赖库,想咨询:

  • 该版本Locust是否存在Bug?
  • Locust在TeamCity构建环境中与Kubernetes及虚拟机是否存在兼容性问题?

错误详情1(递归深度超限)

test setup failed
Traceback (most recent call last):
  File "D:\BuildAgent\work\directorypath\test_external_result_cdm_schema.py", line 69, in mqtt_reader_app_settings_v3
    self.common_modules.inject_appsettings(settings)
  File "D:\BuildAgent\work\directorypath\common_modules.py", line 395, in inject_appsettings
    self.restart_acdc()
  File "D:\BuildAgent\work\directorypath\common_modules.py", line 287, in restart_acdc
    KubernetesTestSetupService().restart_acdc(override_settings=self._new_values)
  File "D:\BuildAgent\work\directorypath\kubernetes\kubernetes_test_setup_service.py", line 167, in restart_acdc
    self.core_v1.patch_namespaced_config_map(config_map['metadata']['name'], self.namespace, config_map)
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\kubernetes\client\api\core_v1_api.py", line 18696, in patch_namespaced_config_map
    return self.patch_namespaced_config_map_with_http_info(name, namespace, body, **kwargs)  # noqa: E501
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\kubernetes\client\api\core_v1_api.py", line 18811, in patch_namespaced_config_map_with_http_info
    return self.api_client.call_api(
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\kubernetes\client\api_client.py", line 348, in call_api
    return self.__call_api(resource_path, method,
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\kubernetes\client\api_client.py", line 180, in __call_api
    response_data = self.request(
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\kubernetes\client\api_client.py", line 407, in request
    return self.rest_client.PATCH(url,
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\kubernetes\client\rest.py", line 295, in PATCH
    return self.request("PATCH", url,
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\kubernetes\client\rest.py", line 168, in request
    r = self.pool_manager.request(
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\urllib3\request.py", line 78, in request
    return self.request_encode_body(
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\urllib3\request.py", line 170, in request_encode_body
    return self.urlopen(method, url, **extra_kw)
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\urllib3\poolmanager.py", line 375, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\urllib3\connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\urllib3\connectionpool.py", line 382, in _make_request
    self._validate_conn(conn)
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\urllib3\connectionpool.py", line 1010, in _validate_conn
    conn.connect()
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\urllib3\connection.py", line 397, in connect
    self.ssl_context = create_urllib3_context(
  File "D:\BuildAgent\work\directorypath\.venv\lib\site-packages\urllib3\util\ssl_.py", line 312, in create_urllib3_context
    context.options |= options
  File "D:\Python310\lib\ssl.py", line 619, in options
    super(SSLContext, SSLContext).options.__set__(self, value)
  File "D:\Python310\lib\ssl.py", line 619, in options
    super(SSLContext, SSLContext).options.__set__(self, value)
  File "D:\Python310\lib\ssl.py", line 619, in options
    super(SSLContext, SSLContext).options.__set__(self, value)
  [Previous line repeated 464 more times]
RecursionError: maximum recursion depth exceeded

错误详情2(阻塞IO错误)

test setup failed
Traceback (most recent call last):
  File "E:\BuildAgent\work\directorypath\conftest.py", line 147, in connected_rabbit_amqp_client_publishing_v0_1
    yield from _connected_publishing_class(rabbit_amqp_client_publishing_class, "V0_1")
  File "E:\BuildAgent\work\directorypath\conftest.py", line 165, in _connected_publishing_class
    rabbit_amqp_client_publishing_class.connect()
  File "E:\BuildAgent\work\directorypath\services\rabbitmq\rabbit_mq_amqp_client.py", line 61, in connect
    self.connection = pika.BlockingConnection(parameters)
  File "E:\BuildAgent\work\directorypath\.venv\lib\site-packages\pika\adapters\blocking_connection.py", line 360, in __init__
    self._impl = self._create_connection(parameters, _impl_class)
  File "E:\BuildAgent\work\directorypath\.venv\lib\site-packages\pika\adapters\blocking_connection.py", line 445, in _create_connection
    ioloop.poll()
  File "E:\BuildAgent\work\808bc413d01bbf5\Tools\autotest_acdc\.venv\lib\site-packages\pika\adapters\select_connection.py", line 579, in poll
    self._poller.poll()
  File "E:\BuildAgent\work\directorypath\.venv\lib\site-packages\pika\adapters\select_connection.py", line 978, in poll
    self._dispatch_fd_events(fd_event_map)
  File "E:\BuildAgent\work\directorypath\.venv\lib\site-packages\pika\adapters\select_connection.py", line 907, in _dispatch_fd_events
    handler(fileno, events)
  File "E:\BuildAgent\work\directorypath\.venv\lib\site-packages\pika\adapters\select_connection.py", line 927, in _read_interrupt
    self._r_interrupt.recv(512)  # pylint: disable=E1101
  File "E:\BuildAgent\work\directorypath\.venv\lib\site-packages\gevent\_socketcommon.py", line 657, in recv
    return self._sock.recv(*args)
BlockingIOError: [WinError 10035] A non-blocking socket operation could not be completed immediately

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:10:58