连接Snowflake导致Jupyter内核崩溃问题求助
Snowflake连接器在VS Code Jupyter Notebook内核崩溃问题解决
问题背景
原本可正常运行的Snowflake连接代码(基于snowflake.connector),在升级/变更配置后,在VS Code的Jupyter Notebook中运行时出现内核崩溃,报错为Canceled future for execute_request message before replies were done。需保留pyarrow数据传输方式,不改用sqlalchemy或pd.read_sql。
当前环境
- snowflake connector 2.8.2
- pyarrow 8.0.0
- traitlets 5.4.0
- Python 3.10.7 64-bit
- VS Code Jupyter扩展版本:2022.9.1303220346
连接代码
from snowflake.connector import connect SNOWFLAKE_ACCOUNT = r'my_account' SNOWFLAKE_USERNAME = r'my_username' SNOWFLAKE_PASSWORD = r'my_password' try: conn = connect( user=SNOWFLAKE_USERNAME, password=SNOWFLAKE_PASSWORD, account=SNOWFLAKE_ACCOUNT, warehouse='W1', database='DB1', schema='SC1' ) except Exception as e: raise e
错误日志
info 15:24:44.741: Started Kernel Python 3.10.7 64-bit (pid: 4548) info 15:24:44.747: UpdateWorkingDirectoryAndPath in Kernel error 15:24:47.233: Disposing session as kernel process died ExitCode: 3221225725, Reason: c:\Users\mkleinbort\AppData\Local\Programs\Python\Python310\lib\site-packages\traitlets\traitlets.py:2412: FutureWarning: Supporting extra quotes around strings is deprecated in traitlets 5.0. You can use 'hmac-sha256' instead of '"hmac-sha256"' if you require traitlets >=5. warn( c:\Users\mkleinbort\AppData\Local\Programs\Python\Python310\lib\site-packages\traitlets\traitlets.py:2366: FutureWarning: Supporting extra quotes around Bytes is deprecated in traitlets 5.0. Use 'cd273979-f6a3-426f-b65e-7098ec266fa7' instead of 'b"cd273979-f6a3-426f-b65e-7098ec266fa7"'. warn( info 15:24:47.233: Dispose Kernel process 4548. error 15:24:47.233: Raw kernel process exited code: 3221225725 error 15:24:47.234: Error in waiting for cell to complete [Error: Canceled future for execute_request message before replies were done at t.KernelShellFutureHandler.dispose (c:\Users\mkleinbort\.vscode\extensions\ms-toolsai.jupyter-2022.9.1303220346\out\extension.node.js:2:32353) at c:\Users\mkleinbort\.vscode\extensions\ms-toolsai.jupyter-2022.9.1303220346\out\extension.node.js:2:51405 at Map.forEach (<anonymous>) at y._clearKernelState (c:\Users\mkleinbort\.vscode\extensions\ms-toolsai.jupyter-2022.9.1303220346\out\extension.node.js:2:51390) at y.dispose (c:\Users\mkleinbort\.vscode\extensions\ms-toolsai.jupyter-2022.9.1303220346\out\extension.node.js:2:44872) at c:\Users\mkleinbort\.vscode\extensions\ms-toolsai.jupyter-2022.9.1303220346\out\extension.node.js:2:2218404 at t.swallowExceptions (c:\Users\mkleinbort\.vscode\extensions\ms-toolsai.jupyter-2022.9.1303220346\out\extension.node.js:7:130943) at p.dispose (c:\Users\mkleinbort\.vscode\extensions\ms-toolsai.jupyter-2022.9.1303220346\out\extension.node.js:2:2218382) at t.RawSession.dispose (c:\Users\mkleinbort\.vscode\extensions\ms-toolsai.jupyter-2022.9.1303220346\out\extension.node.js:2:2223490) at process.processTicksAndRejections (node:internal/process/task_queues:96:5)] warn 15:24:47.235: Cell completed with errors { message: 'Canceled future for execute_request message before replies were done' } info 15:24:47.237: Cancel all remaining cells true || Error || undefined warn 15:24:47.247: 2022-11-25 15:24:47,237 UTC - WARNING - Unknown command: DISPOSE_INTERRUPT_HANDLE:11:2568
解决方案
方案1:降级traitlets版本
错误日志中出现traitlets 5.x的弃用警告,内核崩溃ExitCode 3221225725是Windows下的内存访问错误,大概率是traitlets版本与Jupyter扩展不兼容导致。将traitlets降级到4.x版本:
pip install traitlets==4.3.3
方案2:升级Snowflake连接器及依赖
Snowflake connector 2.8.2可能与pyarrow 8.0.0存在兼容性问题,升级到兼容的新版本:
pip install --upgrade snowflake-connector-python pyarrow
建议升级到snowflake-connector-python >=3.0.0,同时确保pyarrow版本与连接器兼容。
方案3:修改Jupyter内核启动参数
在VS Code中修改Jupyter内核的启动参数,禁用traitlets的弃用警告:
- 打开VS Code设置,搜索
Jupyter: Kernel Args - 添加参数:
--NoTraitsWarning=True - 保存后重启内核重试
方案4:排查Windows环境依赖问题
ExitCode 3221225725可能是缺少VC运行库导致,安装最新的Microsoft Visual C Redistributable包(对应Python 3.10的版本)。
内容的提问来源于stack exchange,提问作者MYK
相关产品推荐
相关产品推荐

