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

Python 3.12环境下无法调试Locust脚本的问题求助

问题解决:Locust 2.29.1在Python 3.12.4中导入冻结并触发锁错误

问题描述

使用Locust 2.29.1执行性能测试时,Python 3.11.8环境下运行正常,但迁移至Python 3.12.4后,脚本执行import locust时直接冻结,最终抛出锁相关错误。已在PyCharm中勾选Gevent compatible设置,无常规业务异常输出,完整错误栈如下:

Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/path/to/project/.venv/lib/python3.12/site-packages/locust/__init__.py", line 19, in <module>
    from .contrib.fasthttp import FastHttpUser
  File "<frozen importlib._bootstrap>", line 471, in _lock_unlock_module
  File "<frozen importlib._bootstrap>", line 365, in acquire
KeyboardInterrupt
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevd.py", line 1551, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/path/to/project/src/scripts/locustfile.py", line 3, in <module>
    import locust
  File "<frozen importlib._bootstrap>", line 1357, in _find_and_load
  File "<frozen importlib._bootstrap>", line 421, in __exit__
  File "<frozen importlib._bootstrap>", line 376, in release
RuntimeError: cannot release un-acquired lock
python-BaseException

可行解决方法

1. 升级Locust到兼容Python 3.12的版本

Locust 2.29.1发布于2024年3月,而Python 3.12在2023年10月正式发布,旧版本Locust对Python 3.12的导入锁逻辑存在兼容性问题。执行以下命令升级到最新稳定版:

pip install --upgrade locust

目前(2024年中)Locust 2.30+版本已修复该Python 3.12专属的锁冲突问题。

2. 调整PyCharm调试器设置

PyCharm的部分导入优化机制可能与Gevent在Python 3.12下的运行逻辑冲突,尝试修改设置:

  • 打开PyCharm设置面板,进入Build, Execution, Deployment > Python Debugger
  • 取消勾选Enable auto-reload和Optimize imports选项
  • 重启调试会话后重新测试

3. 临时强制Gevent兼容Python 3.12

如果无法立即升级Locust,可在导入Locust前手动设置环境变量,强制Gevent启用Python 3.12支持:

import os
os.environ['GEVENT_PYTHON312_SUPPORT'] = 'True'

# 后续再执行Locust导入
import locust

4. 用命令行运行替代PyCharm调试

若调试模式下问题持续,可避开PyCharm调试器干扰,直接用命令行启动Locust:

locust -f src/scripts/locustfile.py

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:23:30