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

向运行中的Python脚本直接发送数据的常规方案及选型建议

直接向Python服务端发送文本数据的实现方案

常规实现方式

  • 针对小型同步场景,常用的无文件中转方案有两种:TCP/UDP Socket通信和本地命名管道(FIFO)。
    • 若需要跨机器通信,优先选Socket;仅本地进程间交互的话,命名管道更轻量。
  • 不需要引入复杂框架,用Python标准库就能实现。

Python Sockets是否合适?

完全合适。你的项目不需要异步处理,同步TCP Socket的实现非常简单,代码量少,足够满足需求,是这类场景的常规选择。

示例代码

同步TCP服务端(替代文件监控逻辑)

import socket

HOST = '127.0.0.1'  # 仅本地访问,需对外开放改0.0.0.0
PORT = 65432

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen()
    print(f"服务端启动,监听 {HOST}:{PORT}")
    while True:
        conn, addr = s.accept()
        with conn:
            print(f"客户端连接: {addr}")
            while True:
                data = conn.recv(1024)
                if not data:
                    break
                # 替换为你的数据处理逻辑
                received_text = data.decode('utf-8')
                print(f"收到数据: {received_text}")
                # 可选:返回接收确认
                conn.sendall(b"数据已接收")

客户端(发送文本数据)

import socket

HOST = '127.0.0.1'
PORT = 65432

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    send_text = "需要处理的文本内容"
    s.sendall(send_text.encode('utf-8'))
    # 可选:接收服务端确认
    data = s.recv(1024)
    print(f"服务端回复: {data.decode('utf-8')}")

本地场景备选:命名管道(FIFO)

仅本地进程通信时,命名管道比Socket更轻量:

服务端(读取管道)

import os

FIFO_PATH = '/tmp/my_fifo'

if not os.path.exists(FIFO_PATH):
    os.mkfifo(FIFO_PATH)

print("服务端等待数据...")
while True:
    with open(FIFO_PATH, 'r') as fifo:
        for line in fifo:
            line = line.strip()
            print(f"收到管道数据: {line}")

客户端(写入管道)

FIFO_PATH = '/tmp/my_fifo'

with open(FIFO_PATH, 'w') as fifo:
    fifo.write("要发送的文本内容\n")

总结

你的小型同步项目,优先选TCP Socket(支持本地/跨机器)或命名管道(仅本地),两者都能替代文件中转,实现直接数据传输,代码简单易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:22:51