运行Python NER项目测试用例报Can not call init more than once如何解决
错误原因
该报错是json_logging库的init()方法被重复调用导致的。从错误栈可以看出:运行测试用例时,每次导入app模块都会执行一次setup_json_logs(app),进而触发一次json_logging.init(framework_name="flask"),而该库的设计不允许重复初始化,因此抛出RuntimeError。
另外你提供的log.py代码还存在语法错误:setup_json_logs函数中json_logging.init(framework_name="flask"这行漏写了右括号,也会导致运行失败。
修复方案
- 先修正语法错误,给
json_logging.init(framework_name="flask"补充右括号 - 在初始化前增加状态判断,避免重复调用
init()方法,修改后的setup_json_logs函数参考如下:
def setup_json_logs(app): json_logging.ENABLE_JSON_LOGGING = True # 仅未初始化时才执行init操作 if not json_logging.is_init(): json_logging.init(framework_name="flask") json_logging.init_request_instrument(app)
- 单元测试场景下如果是多次导入app导致的重复触发,也可以调整测试套件的初始化逻辑,统一在测试启动前执行一次日志初始化,避免每个用例导入时重复执行。
内容的提问来源于stack exchange,提问作者balu datascience
相关产品推荐
相关产品推荐

