OLD | NEW |
(Empty) | |
| 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 |
| 10 class CPWSGIServer(wsgiserver.CherryPyWSGIServer): |
| 11 """Wrapper for wsgiserver.CherryPyWSGIServer. |
| 12 |
| 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. |
| 17 """ |
| 18 |
| 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_si
ze or 0 |
| 22 self.max_request_body_size = self.server_adapter.max_request_body_size o
r 0 |
| 23 |
| 24 server_name = (self.server_adapter.socket_host or |
| 25 self.server_adapter.socket_file or |
| 26 None) |
| 27 |
| 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, |
| 32 server_name, |
| 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, |
| 37 ) |
| 38 self.protocol = self.server_adapter.protocol_version |
| 39 self.nodelay = self.server_adapter.nodelay |
| 40 |
| 41 if sys.version_info >= (3, 0): |
| 42 ssl_module = self.server_adapter.ssl_module or 'builtin' |
| 43 else: |
| 44 ssl_module = self.server_adapter.ssl_module or 'pyopenssl' |
| 45 if self.server_adapter.ssl_context: |
| 46 adapter_class = wsgiserver.get_ssl_adapter_class(ssl_module) |
| 47 self.ssl_adapter = adapter_class( |
| 48 self.server_adapter.ssl_certificate, |
| 49 self.server_adapter.ssl_private_key, |
| 50 self.server_adapter.ssl_certificate_chain) |
| 51 self.ssl_adapter.context = self.server_adapter.ssl_context |
| 52 elif self.server_adapter.ssl_certificate: |
| 53 adapter_class = wsgiserver.get_ssl_adapter_class(ssl_module) |
| 54 self.ssl_adapter = adapter_class( |
| 55 self.server_adapter.ssl_certificate, |
| 56 self.server_adapter.ssl_private_key, |
| 57 self.server_adapter.ssl_certificate_chain) |
| 58 |
| 59 self.stats['Enabled'] = getattr(self.server_adapter, 'statistics', False
) |
| 60 |
| 61 def error_log(self, msg="", level=20, traceback=False): |
| 62 cherrypy.engine.log(msg, level, traceback) |
| 63 |
OLD | NEW |