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

如何用Python从Databricks共享文件至Windows文件共享路径(报错求助)

解决Databricks中使用ftplib上传文件到Windows共享时的“connection reused”错误

我尝试使用以下Python代码将文件从Databricks共享至Windows文件共享路径,但出现“connection reused”错误。代码如下:

import ftplib
ftp_server = ftplib.FTP(HOSTNAME, USERNAME, PASSWORD)
 
# force UTF-8 encoding
ftp_server.encoding = "utf-8"
 
# Enter File Name with Extension
filename = "file1.csv"
 
# Read file in binary mode
with open(filename, "rb") as file:
    # Command for Uploading the file "STOR filename"
    ftp_server.storbinary(f"STOR {filename}", file)
 
# Get list of files
ftp_server.dir()
 
# Close the Connection
ftp_server.quit()

我已尝试上述方案,但仍遇到该错误。


可能的解决方案:

  • 显式拆分连接,避免复用冲突
    ftplib执行storbinary、dir等操作时会创建独立数据连接,未正确释放时易触发复用错误。可以拆分操作,每次使用新连接:
import ftplib

# 上传文件的连接
ftp_upload = ftplib.FTP(HOSTNAME, USERNAME, PASSWORD)
ftp_upload.encoding = "utf-8"
filename = "file1.csv"

with open(filename, "rb") as file:
    ftp_upload.storbinary(f"STOR {filename}", file)
ftp_upload.quit()

# 查询目录的新连接
ftp_list = ftplib.FTP(HOSTNAME, USERNAME, PASSWORD)
ftp_list.dir()
ftp_list.quit()
  • 强制启用FTP被动模式
    Windows FTP服务通常要求被动模式,默认ftplib的主动模式可能导致连接异常。添加被动模式配置:
ftp_server = ftplib.FTP(HOSTNAME, USERNAME, PASSWORD)
ftp_server.encoding = "utf-8"
ftp_server.set_pasv(True)  # 启用被动模式
  • 设置连接超时,清理闲置连接
    初始化FTP连接时指定超时时间,防止长期闲置的连接被误复用:
ftp_server = ftplib.FTP(timeout=20)
ftp_server.connect(HOSTNAME)
ftp_server.login(USERNAME, PASSWORD)
ftp_server.encoding = "utf-8"
  • 检查Databricks网络权限
    Databricks集群的出站防火墙可能限制了FTP数据端口(默认被动模式使用1024-65535范围端口),联系管理员确认集群所在网络已开放FTP控制端口(21)及对应数据端口范围。

  • 验证文件与目录权限
    确保Databricks集群能读取本地的file1.csv,同时Windows共享目录具备写入权限——权限不足导致的连接中断,也可能触发“connection reused”错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 09:40:06