@@ -2795,7 +2795,11 @@ class server_cls(server_cls):
2795
2795
2796
2796
class CherryPyServer (ServerAdapter ):
2797
2797
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
+
2799
2803
self .options ['bind_addr' ] = (self .host , self .port )
2800
2804
self .options ['wsgi_app' ] = handler
2801
2805
@@ -2818,6 +2822,25 @@ def run(self, handler): # pragma: no cover
2818
2822
server .stop ()
2819
2823
2820
2824
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
+
2821
2844
class WaitressServer (ServerAdapter ):
2822
2845
def run (self , handler ):
2823
2846
from waitress import serve
@@ -2985,7 +3008,9 @@ def run(self, handler):
2985
3008
2986
3009
class AutoServer (ServerAdapter ):
2987
3010
""" Untested. """
2988
- adapters = [WaitressServer , PasteServer , TwistedServer , CherryPyServer , WSGIRefServer ]
3011
+ adapters = [WaitressServer , PasteServer , TwistedServer , CherryPyServer ,
3012
+ CherootServer , WSGIRefServer ]
3013
+
2989
3014
def run (self , handler ):
2990
3015
for sa in self .adapters :
2991
3016
try :
@@ -2999,6 +3024,7 @@ def run(self, handler):
2999
3024
'wsgiref' : WSGIRefServer ,
3000
3025
'waitress' : WaitressServer ,
3001
3026
'cherrypy' : CherryPyServer ,
3027
+ 'cheroot' : CherootServer ,
3002
3028
'paste' : PasteServer ,
3003
3029
'fapws3' : FapwsServer ,
3004
3030
'tornado' : TornadoServer ,
0 commit comments