【发布时间】:2015-09-20 02:24:09
【问题描述】:
例如,我正在编写一个基本的 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()
【问题讨论】:
-
@JeffC 好吧,我已经尝试创建一个进程来退出程序……但我认为这不是必需的。
-
就像你在学校所做的那样……请展示你的作品。 :) 这是在 SO 上回答问题的过程的一部分。它对您很有帮助,因为它迫使您调查自己的问题并仔细考虑。它还向读者证明你做了功课,并做出了合理的尝试来回答你自己的问题。第三,它可以帮助读者发现和诊断问题,从而为您提供更好的答案,减少我们浪费的时间。
-
@JeffC 好的,谢谢:)。让我编辑我的问题。
-
@JeffC 我刚刚编辑了我的问题。但是,这个解决方案非常复杂,而且行不通。
-
嗯,我不确定,虽然在文档中,它说“由于 exit() 最终“仅”引发异常,它只会在从主线程调用时退出进程,并且异常未被拦截。”