如何退出程序但函数仍然是运行?

How to exit program but a function is still running?

例如,我正在编写一个基本的 wsgi 服务器程序。

此程序运行完美,但服务器将保持 运行,直到我按下 Ctrl-C。我希望程序在服务器 运行 持续 10 分钟后退出。

我已经尝试创建一个进程来退出程序,但我认为这不是必需的,而且它不起作用:

import time
import sys
from multiprocessing import Process
from wsgiref.simple_server import make_server
def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return [b'Hello']

def p_exit():
    time.sleep(600) 
    sys.exit()


p = Process(target=p_exit)
p.start()

httpd = make_server('', 80, application)
httpd.serve_forever()

可以设置一个告警信号处理程序退出,并在10分钟后触发告警:

def handler(*args):
    sys.exit(1)

signal.signal(signal.SIGALRM, handler)
signal.alarm(60*10)

# Now start the wsgi application and wait
httpd = make_server('', 80, application)
httpd.serve_forever()

但是,ALRM 信号仅适用于 *nix,对于 Windows 系统,您需要尝试 this.