Можно ли запустить клиент rtorrent в фоновом режиме с помощью Python?
Я пытаюсь сделать это с помощью потоков импорта PIPE из подпроцесса импорта Popen, PIPE
class RunClient(threading.Thread):
queue_cmd = None
torrent = None
def __init__(self,q_cmd,torrent):
self.queue_cmd = q_cmd
threading.Thread.__init__(self)
self.torrent = torrent
def run(self):
"""Run client"""
FNULL = open('/dev/null', 'w')
print(self.torrent.getRun())
process = Popen(self.torrent.getRun(),stdout=FNULL,stdin=FNULL)
self.queue_cmd.put(process)
process.communicate()[0]
Этот скрипт должен запустить rTorrent и вернуть объект с его PID.
class Clients(threading.Thread):
pids = {}
q_cmd = None
def __init__(self,q_cmd):
""" """
self.q_cmd = q_cmd
threading.Thread.__init__(self)
def startClient(self,id):
""" """
q = Queue.Queue(0)
rClient = RunClient(q,Torrent())
rClient.start()
self.pids[id] = q.get()
print self.pids
def run(self):
"""Run torrent client"""
print("Start thread...")
self.startClient(50)
i=0
print("Start while...")
while i<20:
time.sleep(1)
print(">>>",self.pids[50].pid)
i=i+1
Этот скрипт пытается запустить поток с rTorrent и в цикле набрать его PID.
Но когда я запускаю клиент как / dev / null для stdin и stdout, он не запускается. Когда я перехожу на:
process = Popen(self.torrent.getRun(),stdout=PIPE,stdin=PIPE)
В этом коде основной поток ожидает, пока закрывается rtorrent.
Возможно, кто-то поможет решить эту проблему, или, может быть, я что-то не так делаю.