2012-07-30 34 views
0

我是cherrypy的新手。 我只是想與wsgiserver.The程序的示例程序如下如何在Linux中停止WsgiServer

from cherrypy import wsgiserver 

def my_crazy_app(environ, start_response): 
    status = '200 OK' 
    response_headers = [('Content-type','text/plain')] 
    start_response(status, response_headers) 
    return ['Hello world!'] 

server = wsgiserver.CherryPyWSGIServer(
     ('127.0.0.1', 8080), my_crazy_app, 
     server_name='localhost') 
server.start() 

我得到的輸出Hello world成功, 但問題是,當我在終端上打Ctrl-c停止服務器,它沒有得到停止。怎麼做?

回答

1

IIRC,wsgiserver本身沒有關聯到任何信號,因此不尊重SIGINT中斷。 只有更高級別的CherryPy引擎纔會提供。如果你不能使用它,你可能想要 使用Python信號模塊安裝處理程序。

那麼,類似的規定將做的工作:

import signal 

from cherrypy import wsgiserver 
def my_crazy_app(environ, start_response): 
    status = '200 OK' 
    response_headers = [('Content-type','text/plain')] 
    start_response(status, response_headers) 
    return ['Hello world!'] 

server = wsgiserver.CherryPyWSGIServer(('127.0.0.1', 8080), my_crazy_app, server_name='localhost') 

def stop_server(*args, **kwargs): 
    server.stop() 

signal.signal(signal.SIGINT, stop_server) 

server.start()