Python子进程: streaming in and out

标签 python subprocess

我有一个用Python编写的服务器,它基本上接受来自客户端的传入连接,并将从客户端接收到的数据提供给子进程(每个连接一个实例),然后处理数据并将结果返回到服务器,以便它可以发送它返回给客户端。

问题是数据正在流入,我需要能够在看不到 EOF 的情况下执行多个读/写操作。到目前为止,我一直无法想出一个解决方案,使我能够做到这一点而不会让我的服务器程序在读取时被阻止。有什么建议么?谢谢。

最佳答案

您可以使用select.select (在 Unix 和 Windows 上可用)。

while True:
    rlist, wlist, xlist = select.select([client, proc.stdout], [], [])

select.select 的调用将阻塞,直到 client 套接字或 proc.stdout 准备好读取。

rlist 包含可供读取的 [client.stdin, proc.stdout] 子集。

可以找到其用法示例(尽管针对不同的问题)here .

关于Python子进程: streaming in and out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9517223/

相关文章:

Python subprocess.check_output() 似乎忽略参数

python - 使用 Locust 对 docker-compose 应用程序进行性能测试时,连接被拒绝错误 (111)

python - 测试 Django FileResponse

python - 将一年与数据值分开;照顾闰年

python - 从 python 中运行 python 脚本并捕获异常

python - pycharm 和 subprocess - 在控制台中有效的在 Pycharm 中无效

python - 将多个具有层次结构的 pd.DataFrame 保存到 hdf5

python - 将我的 Django 项目上传到 GitHub 是否安全?

python - 如何在子进程 Popen 中引用工作区中的文件?

python - 在 python 脚本中运行 linux 子进程