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

使用Neomodel+Neo4j Aura时Python关闭阶段Bolt异常问题排查

问题:Python 3.10 + Neomodel + Neo4j Aura 出现 sys.meta_path is None 退出异常

使用Python 3.10、Neomodel连接Neo4j Aura时,数据已成功保存到数据库,但控制台抛出以下异常:

ImportError: sys.meta_path is None, Python is likely shutting down
Exception ignored in: <function Bolt.__del__ at 0x7f1fe64679a0>

完整报错信息:

Exception ignored in: <function Driver.__del__ at 0x7f1fe649e440>
Traceback (most recent call last):
  File ".local/lib/python3.10/site-packages/neo4j/_sync/driver.py", line 411, in __del__
  File ".local/lib/python3.10/site-packages/neo4j/_sync/driver.py", line 456, in close
  File ".local/lib/python3.10/site-packages/neo4j/_sync/io/_pool.py", line 367, in close
  File ".local/lib/python3.10/site-packages/neo4j/_sync/io/_pool.py", line 320, in _close_connections
  File ".local/lib/python3.10/site-packages/neo4j/_sync/io/_bolt.py", line 757, in close
  File ".local/lib/python3.10/site-packages/neo4j/_sync/io/_bolt.py", line 609, in _send_all
  File ".local/lib/python3.10/site-packages/neo4j/_sync/io/_common.py", line 145, in flush
  File ".local/lib/python3.10/site-packages/neo4j/_async_compat/util.py", line 113, in callback
  File ".local/lib/python3.10/site-packages/neo4j/_sync/io/_bolt.py", line 688, in _set_defunct_write
  File ".local/lib/python3.10/site-packages/neo4j/_sync/io/_bolt.py", line 691, in _set_defunct
ImportError: sys.meta_path is None, Python is likely shutting down
Exception ignored in: <function Bolt.__del__ at 0x7f1fe64679a0>
Traceback (most recent call last):
  File ".local/lib/python3.10/site-packages/neo4j/_sync/io/_bolt.py", line 161, in __del__
  File ".local/lib/python3.10/site-packages/neo4j/_sync/io/_bolt.py", line 757, in close
  File ".local/lib/python3.10/site-packages/neo4j/_sync/io/_bolt.py", line 609, in _send_all
  File ".local/lib/python3.10/site-packages/neo4j/_sync/io/_common.py", line 145, in flush
  File ".local/lib/python3.10/site-packages/neo4j/_async_compat/util.py", line 113, in callback
  File ".local/lib/python3.10/site-packages/neo4j/_sync/io/_bolt.py", line 688, in _set_defunct_write
  File ".local/lib/python3.10/site-packages/neo4j/_sync/io/_bolt.py", line 691, in _set_defunct
ImportError: sys.meta_path is None, Python is likely shutting down

Process finished with exit code 0

用户代码:

from neomodel import (config, StructuredNode, StringProperty, IntegerProperty,
                      UniqueIdProperty)

user = 'neo4j'
psw = 'test'
uri = 'test.databases.neo4j.io'

config.DATABASE_URL = 'neo4j+s://{}:{}@{}'.format(user, psw, uri)


class Person(StructuredNode):
    uid = UniqueIdProperty()
    name = StringProperty(unique_index=True)
    age = IntegerProperty(index=True, default=0)
    
if __name__ == "__main__":
    jim = Person(name='Jisdm', age=3).save()  # Create
    jim.name = "adasd"
    jim.save()  # Update, (with validation)

原因分析

这个异常是Python进程退出阶段触发的:业务逻辑已经执行完成(数据成功保存),但Neo4j驱动的__del__析构函数在Python进入shutdown状态后才尝试关闭连接。此时Python已经将sys.meta_path置为None,驱动内部执行清理操作时尝试访问导入相关逻辑,就会抛出这个错误。

解决办法

  • 手动关闭驱动连接:在代码末尾主动获取并关闭Neo4j驱动,避免依赖析构函数自动清理。修改后的代码如下:
    from neomodel import (config, StructuredNode, StringProperty, IntegerProperty,
                          UniqueIdProperty, db)
    
    user = 'neo4j'
    psw = 'test'
    uri = 'test.databases.neo4j.io'
    
    config.DATABASE_URL = 'neo4j+s://{}:{}@{}'.format(user, psw, uri)
    
    
    class Person(StructuredNode):
        uid = UniqueIdProperty()
        name = StringProperty(unique_index=True)
        age = IntegerProperty(index=True, default=0)
        
    if __name__ == "__main__":
        jim = Person(name='Jisdm', age=3).save()  # Create
        jim.name = "adasd"
        jim.save()  # Update, (with validation)
        # 主动关闭驱动
        db.driver.close()
    
  • 升级依赖版本:部分旧版本的Neo4j驱动或Neomodel存在退出清理的bug,升级到最新稳定版可以解决问题。执行以下命令更新:
    pip install --upgrade neomodel neo4j
    
  • 临时捕获异常(不推荐):如果无法升级或修改代码,可以添加全局异常捕获忽略这类析构函数异常,但这只是临时 workaround,可能掩盖其他问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:25:01