私はこのコードを持っています:
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>
です。
そのプロセスを終了するにはどうすればよいですか?