我有这个代码:
class Server(object):
servers = []
def __init__(self, name, host, port, process):
self.name = name.lower()
self.host, self.port = host, port
self.process = process
self.pid = self.process.pid
@staticmethod
def register(server):
Server.servers.append(server)
@staticmethod
def unregister(server):
Server.servers.remove(server)
def start_waitress(host='0.0.0.0', port=8080):
args = ['--port={}'.format(port),
'--host={}'.format(host), 'yarr.wsgi:application']
subprocess.call(['waitress-serve'] + args)
...
host, port = '0.0.0.0', 8080
process = multiprocessing.Process(target=start_waitress)
process.start()
Server.register(Server('waitress', host, port, process))
...
for server in Server.servers:
if server.name == 'waitress':
server.process.terminate() # Here's the problem
Server.unregister(server)
break
问题是我不能在启动进程后终止它。在
终止进程的唯一方法是运行kill <pid>
。在
如何终止该过程?在
正如J.F.Sebastian所说,
waitress-serve
守护着自己。在我不能用
multiprocessing
来解决这个问题,但是我找到了一个subprocess
的解决方案。在不是创建
multiprocessing.Process
,而是调用subprocess.Popen(cmd)
。在相关问题 更多 >
编程相关推荐