@@ -2795,7 +2795,11 @@ class server_cls(server_cls):
27952795
27962796class CherryPyServer (ServerAdapter ):
27972797 def run (self , handler ): # pragma: no cover
2798- from cherrypy import wsgiserver
2798+ depr (0 , 13 , "The wsgi server part of cherrypy was split into a new "
2799+ "project called 'cheroot'." , "Use the 'cheroot' server "
2800+ "adapter instead of cherrypy." )
2801+ from cherrypy import wsgiserver # This will fail for CherryPy >= 9
2802+
27992803 self .options ['bind_addr' ] = (self .host , self .port )
28002804 self .options ['wsgi_app' ] = handler
28012805
@@ -2818,6 +2822,25 @@ def run(self, handler): # pragma: no cover
28182822 server .stop ()
28192823
28202824
2825+ class CherootServer (ServerAdapter ):
2826+ def run (self , handler ): # pragma: no cover
2827+ from cheroot import wsgi
2828+ from cheroot .ssl import builtin
2829+ self .options ['bind_addr' ] = (self .host , self .port )
2830+ self .options ['wsgi_app' ] = handler
2831+ certfile = self .options .pop ('certfile' , None )
2832+ keyfile = self .options .pop ('keyfile' , None )
2833+ chainfile = self .options .pop ('chainfile' , None )
2834+ server = wsgi .Server (** self .options )
2835+ if certfile and keyfile :
2836+ server .ssl_adapter = builtin .BuiltinSSLAdapter (
2837+ certfile , keyfile , chainfile )
2838+ try :
2839+ server .start ()
2840+ finally :
2841+ server .stop ()
2842+
2843+
28212844class WaitressServer (ServerAdapter ):
28222845 def run (self , handler ):
28232846 from waitress import serve
@@ -2985,7 +3008,9 @@ def run(self, handler):
29853008
29863009class AutoServer (ServerAdapter ):
29873010 """ Untested. """
2988- adapters = [WaitressServer , PasteServer , TwistedServer , CherryPyServer , WSGIRefServer ]
3011+ adapters = [WaitressServer , PasteServer , TwistedServer , CherryPyServer ,
3012+ CherootServer , WSGIRefServer ]
3013+
29893014 def run (self , handler ):
29903015 for sa in self .adapters :
29913016 try :
@@ -2999,6 +3024,7 @@ def run(self, handler):
29993024 'wsgiref' : WSGIRefServer ,
30003025 'waitress' : WaitressServer ,
30013026 'cherrypy' : CherryPyServer ,
3027+ 'cheroot' : CherootServer ,
30023028 'paste' : PasteServer ,
30033029 'fapws3' : FapwsServer ,
30043030 'tornado' : TornadoServer ,
0 commit comments