1 """WSGI server interface (see PEP 333). This adds some CP-specific bits to
2 the framework-agnostic wsgiserver package.
3 """
4 import sys
5
6 import cherrypy
7 from cherrypy import wsgiserver
8
9
11
12 """Wrapper for wsgiserver.CherryPyWSGIServer.
13
14 wsgiserver has been designed to not reference CherryPy in any way,
15 so that it can be used in other frameworks and applications. Therefore,
16 we wrap it here, so we can set our own mount points from cherrypy.tree
17 and apply some attributes from config -> cherrypy.server -> wsgiserver.
18 """
19
21 self.server_adapter = server_adapter
22 self.max_request_header_size = (
23 self.server_adapter.max_request_header_size or 0
24 )
25 self.max_request_body_size = (
26 self.server_adapter.max_request_body_size or 0
27 )
28
29 server_name = (self.server_adapter.socket_host or
30 self.server_adapter.socket_file or
31 None)
32
33 self.wsgi_version = self.server_adapter.wsgi_version
34 s = wsgiserver.CherryPyWSGIServer
35 s.__init__(self, server_adapter.bind_addr, cherrypy.tree,
36 self.server_adapter.thread_pool,
37 server_name,
38 max=self.server_adapter.thread_pool_max,
39 request_queue_size=self.server_adapter.socket_queue_size,
40 timeout=self.server_adapter.socket_timeout,
41 shutdown_timeout=self.server_adapter.shutdown_timeout,
42 )
43 self.protocol = self.server_adapter.protocol_version
44 self.nodelay = self.server_adapter.nodelay
45
46 if sys.version_info >= (3, 0):
47 ssl_module = self.server_adapter.ssl_module or 'builtin'
48 else:
49 ssl_module = self.server_adapter.ssl_module or 'pyopenssl'
50 if self.server_adapter.ssl_context:
51 adapter_class = wsgiserver.get_ssl_adapter_class(ssl_module)
52 self.ssl_adapter = adapter_class(
53 self.server_adapter.ssl_certificate,
54 self.server_adapter.ssl_private_key,
55 self.server_adapter.ssl_certificate_chain)
56 self.ssl_adapter.context = self.server_adapter.ssl_context
57 elif self.server_adapter.ssl_certificate:
58 adapter_class = wsgiserver.get_ssl_adapter_class(ssl_module)
59 self.ssl_adapter = adapter_class(
60 self.server_adapter.ssl_certificate,
61 self.server_adapter.ssl_private_key,
62 self.server_adapter.ssl_certificate_chain)
63
64 self.stats['Enabled'] = getattr(
65 self.server_adapter, 'statistics', False)
66
67 - def error_log(self, msg="", level=20, traceback=False):
69