当接收到键盘中断时,如何正确地加入进程?

2024-05-15 07:47:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个要在单独进程中运行的服务器,并处理KeyBoardInterrupt异常以停止它:

import multiprocessing as mp
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler

def server_spawner():
  server = HTTPServer(('', 12345), BaseHTTPRequestHandler)
  try:
    server.serve_forever()
  except KeyboardInterrupt:
    server.shutdown()
    server.server_close()

if __name__ == '__main__':
  server_proc = mp.Process(target=server_spawner)
  server_proc.start()
  server_proc.join()

但是当我按下CTRL+C我得到了这样的回溯:

^{pr2}$

如何在多进程程序中正确处理KeyBoardInterrupt并加入进程?在


Tags: fromimport服务器server进程defasmp
1条回答
网友
1楼 · 发布于 2024-05-15 07:47:18

来自Jesse Noller的博客。在

import multiprocessing as mp
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler

def server_spawner():
    server = HTTPServer(('', 12345), BaseHTTPRequestHandler)
    try:
        server.serve_forever()
    except KeyboardInterrupt:
        server.shutdown()
        server.server_close()

if __name__ == '__main__':
    server_proc = mp.Process(target=server_spawner)
    server_proc.start()
    try:
        server_proc.join()
    except KeyboardInterrupt:
        server_proc.terminate()
        server_proc.join()

相关问题 更多 >