如何将sh
(python模块)与gevent
一起使用?
如果我直接运行suprocess,我会这样做:
import gevent
from gevent.subprocess import Popen, PIPE, STDOUT
patch_all()
subprocess.Popen(...)
但我如何将sh
与gevent
一起使用?
说:
from sh import tar
tar("cf", "file.tar", "dir")
tar
只是一个例子,我想一般找到答案。
它有可能吗?
如何修补sh
中使用的子流程?
或更一般的问题:
如果patch subprocess
用于某些导入的模块(如sh),我该怎么办?它有可能吗?
答案 0 :(得分:2)
sh
模块不使用子进程模块。它简单而直接地执行os.fork
后跟os.execve
。它还管理自己的输入和输出管道。因此,对子进程模块所做的任何操作都不会影响sh
。
所以问题的答案是,不,修补子流程并期望它对sh有任何影响是不可能的。