我正在尝试通过gerrit
命令监视ssh
个事件。命令如下。
ssh -p 29418 review.example.com gerrit stream-events
我需要监视在不同端口上运行的各种此类gerrit
实例,并对从这些gerrit
实例收到的事件进行进一步分析。我想通过代码使用python
来完成。我考虑将这些不同的ssh
连接作为多个进程运行,为此我使用multiprocessing
python包尝试使用daemon
属性将进程作为daemon
运行。下面是我的代码片段。
import multiprocessing as mp
class MyProcess(mp.Process):
def __init__(self, target, args):
mp.Process.__init__(self, target=target, args=args)
while True:
running = get_runnig_instances() #get all the running gerrit instances
for instance in running:
port_num = instance.port
url = instance.ip
proc = MyProcess(target=client_setup, args=(url,port_num,)) #client_setup(url,port_num) is a function that runs the command for the ssh connection to stream gerrit events
proc.daemon = True
proc.start()
proc.join()
在第一个ssh
实例运行gerrit
命令后,控件没有从函数client_setup
返回到上面的代码并且在那里停止运行,这不起作用连接并等待捕获任何可能的事件。因此,不会捕获任何其他正在运行的gerrit
实例的事件。
此外,get_running_instances
函数每次返回一组不同的运行gerrit
实例。因此,我无法一次创建所有流程。
我还尝试使用daemon
包来实现同样的目标。以下是代码的片段。
import multiprocessing as mp
import daemon
class MyProcess(mp.Process):
def __init__(self, target, args):
mp.Process.__init__(self, target=target, args=args)
while True:
running = get_runnig_instances() #get all the running gerrit instances
for instance in running:
port_num = instance.port
url = instance.ip
with daemon.DaemonContext():
proc = MyProcess(target=client_setup, args=(url,port_num,)) #client_setup(url,port_num) is a function that runs the command for the ssh connection to stream gerrit events
proc.start()
proc.join()
我在这里遇到了同样的问题。我该怎么做?我不确定我做错了什么,需要帮助。