1 """WSGI server interface (see PEP 333). This adds some CP-specific bits to
2 the framework-agnostic wsgiserver package.
7 from cherrypy
import wsgiserver
10 class CPWSGIServer(wsgiserver
.CherryPyWSGIServer
):
11 """Wrapper for wsgiserver.CherryPyWSGIServer.
13 wsgiserver has been designed to not reference CherryPy in any way,
14 so that it can be used in other frameworks and applications. Therefore,
15 we wrap it here, so we can set our own mount points from cherrypy.tree
16 and apply some attributes from config -> cherrypy.server -> wsgiserver.
19 def __init__(self
, server_adapter
=cherrypy
.server
):
20 self
.server_adapter
= server_adapter
21 self
.max_request_header_size
= self
.server_adapter
.max_request_header_size
or 0
22 self
.max_request_body_size
= self
.server_adapter
.max_request_body_size
or 0
24 server_name
= (self
.server_adapter
.socket_host
or
25 self
.server_adapter
.socket_file
or
28 self
.wsgi_version
= self
.server_adapter
.wsgi_version
29 s
= wsgiserver
.CherryPyWSGIServer
30 s
.__init
__(self
, server_adapter
.bind_addr
, cherrypy
.tree
,
31 self
.server_adapter
.thread_pool
,
33 max = self
.server_adapter
.thread_pool_max
,
34 request_queue_size
= self
.server_adapter
.socket_queue_size
,
35 timeout
= self
.server_adapter
.socket_timeout
,
36 shutdown_timeout
= self
.server_adapter
.shutdown_timeout
,
38 self
.protocol
= self
.server_adapter
.protocol_version
39 self
.nodelay
= self
.server_adapter
.nodelay
41 ssl_module
= self
.server_adapter
.ssl_module
or 'pyopenssl'
42 if self
.server_adapter
.ssl_context
:
43 adapter_class
= wsgiserver
.get_ssl_adapter_class(ssl_module
)
44 self
.ssl_adapter
= adapter_class(
45 self
.server_adapter
.ssl_certificate
,
46 self
.server_adapter
.ssl_private_key
,
47 self
.server_adapter
.ssl_certificate_chain
)
48 self
.ssl_adapter
.context
= self
.server_adapter
.ssl_context
49 elif self
.server_adapter
.ssl_certificate
:
50 adapter_class
= wsgiserver
.get_ssl_adapter_class(ssl_module
)
51 self
.ssl_adapter
= adapter_class(
52 self
.server_adapter
.ssl_certificate
,
53 self
.server_adapter
.ssl_private_key
,
54 self
.server_adapter
.ssl_certificate_chain
)