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

如何用Python将计算服务器的结果写入远程存储服务器?

当然有办法搞定这个「算力机干活、存储机存结果」的场景!我给你整理了几种Python里能直接落地的实用方案:

方案1:通过SSH直接远程写入文件(Paramiko库)

如果两台服务器能通过SSH连通,这是最直接的方式。用paramiko库可以在Python里建立SSH连接,直接在远程存储服务器上创建或写入文件。

首先安装依赖:

pip install paramiko

示例代码:

import paramiko

# 存储服务器的SSH信息
storage_host = "你的存储服务器IP"
storage_port = 22
storage_user = "用户名"
storage_password = "密码"  # 推荐用密钥登录更安全

# 假设你的计算结果是字符串/字节流
computed_result = "这里是Python代码运行的结果内容\n"

try:
    # 建立SSH连接
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_client.connect(storage_host, port=storage_port, username=storage_user, password=storage_password)
    
    # 方式1:直接执行远程写入命令(适合小内容)
    stdin, stdout, stderr = ssh_client.exec_command(f'echo "{computed_result}" >> /path/to/remote/result.txt')
    
    # 方式2:用SFTP文件对象写入(适合大内容,支持流写入)
    sftp = ssh_client.open_sftp()
    with sftp.file('/path/to/remote/result.txt', 'a') as remote_file:
        remote_file.write(computed_result)
    
    sftp.close()
    ssh_client.close()
    print("结果已成功写入存储服务器!")
except Exception as e:
    print(f"写入失败:{str(e)}")
方案2:用SFTP传输临时文件

如果计算结果是大文件,先在算力服务器上生成一个小临时文件(注意控制大小,别占满1GB空间),再通过SFTP传到存储服务器:

import paramiko
import tempfile
import os

# 先在算力服务器生成临时结果文件
with tempfile.NamedTemporaryFile(mode='w', delete=False) as temp_file:
    temp_file.write("你的大体积计算结果内容")
    temp_file_path = temp_file.name

# 建立SFTP连接传输文件
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(storage_host, port=storage_port, username=storage_user, password=storage_password)

sftp = ssh_client.open_sftp()
sftp.put(temp_file_path, '/path/to/remote/large_result.txt')

# 清理算力服务器上的临时文件
os.unlink(temp_file_path)

sftp.close()
ssh_client.close()
方案3:挂载远程存储为本地目录(NFS/SMB)

如果两台服务器在同一个可信局域网,可以把存储服务器的磁盘挂载到算力服务器上,这样Python代码就像操作本地文件一样写入,完全不用改业务代码!

  • Linux环境(NFS):

    1. 在存储服务器上安装并配置NFS,共享目标目录
    2. 在算力服务器上挂载共享目录:
      sudo mount -t nfs 存储服务器IP:/共享目录路径 /本地挂载点
      
    3. Python写入代码:
      with open('/本地挂载点/result.txt', 'a') as f:
          f.write("计算结果内容")
      
  • Windows环境(SMB):

    1. 在存储服务器上共享目标文件夹
    2. 在算力服务器上映射网络驱动器:
      net use Z: \\存储服务器IP\共享文件夹 密码 /user:用户名
      
    3. Python直接写入Z盘对应文件即可
方案4:通过Web API写入(适合跨公网场景)

如果两台服务器不在同一网络,甚至是公网环境,可以在存储服务器上跑一个极简Web服务(比如Flask),算力服务器把结果通过HTTP请求发过去,存储服务器负责写入本地文件。

存储服务器端(Flask服务):

from flask import Flask, request
app = Flask(__name__)

@app.route('/write-result', methods=['POST'])
def write_result():
    result_content = request.data.decode('utf-8')
    with open('/path/to/storage/result.txt', 'a') as f:
        f.write(result_content + '\n')
    return {"status": "success"}

if __name__ == '__main__':
    # 生产环境建议用gunicorn/uwsgi替代自带服务器
    app.run(host='0.0.0.0', port=5000)

算力服务器端(发送请求):

import requests

api_url = "http://存储服务器IP:5000/write-result"
computed_result = "你的计算结果内容"

response = requests.post(api_url, data=computed_result.encode('utf-8'))
if response.status_code == 200:
    print("写入成功!")
else:
    print("写入失败:", response.text)

实用小贴士:

  • 确保存储服务器给算力服务器开放了对应端口(SSH的22、NFS的2049、Web服务端口等)
  • 权限要到位:算力服务器的用户需要有存储服务器目标目录的写入权限
  • 大文件优先用流写入或分块传输,避免占满算力服务器的有限空间
  • 敏感信息(密码、密钥)别硬编码,用环境变量或密钥管理工具存储

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:24:33