Skip to content

Commit b9229ee

Browse files
06180339defnull
authored andcommitted
Add ServerAdapter for CherryPy >= 9
Since CherryPy >= 9, the server part of CherryPy has been extracted and named Cheroot. Thus the old CherryPy ServerAdapter does not work for CherryPy >= 9: the import fails, and the SSL part should be different too. Cheroot can be installed (git install cheroot) without CherryPy so that we can just have a CherootServer adapter in addition to the CherryPyServer adapter for the older versions.
1 parent b50efac commit b9229ee

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

bottle.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3268,6 +3268,25 @@ def run(self, handler): # pragma: no cover
32683268
server.stop()
32693269

32703270

3271+
class CherootServer(ServerAdapter):
3272+
def run(self, handler): # pragma: no cover
3273+
from cheroot import wsgi
3274+
from cheroot.ssl import builtin
3275+
self.options['bind_addr'] = (self.host, self.port)
3276+
self.options['wsgi_app'] = handler
3277+
certfile = self.options.pop('certfile', None)
3278+
keyfile = self.options.pop('keyfile', None)
3279+
chainfile = self.options.pop('chainfile', None)
3280+
server = wsgi.Server(**self.options)
3281+
if certfile and keyfile:
3282+
server.ssl_adapter = builtin.BuiltinSSLAdapter(
3283+
certfile, keyfile, chainfile)
3284+
try:
3285+
server.start()
3286+
finally:
3287+
server.stop()
3288+
3289+
32713290
class WaitressServer(ServerAdapter):
32723291
def run(self, handler):
32733292
from waitress import serve

0 commit comments

Comments
 (0)