添加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
相关产品推荐
相关产品推荐

