/
cherry.py
41 lines (29 loc) · 1.3 KB
/
cherry.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Use Cherrypy as wsgi server.
# Source: https://www.digitalocean.com/community/tutorials/how-to-deploy-python-wsgi-applications-using-a-cherrypy-web-server-behind-nginx
import logging
import cherrypy
def cherry_graft_and_start(wsgi_application, host="0.0.0.0", port=8080,
num_threads=30, ssl_module=None, cert=None, key=None, cacert=None):
logging.basicConfig(level=logging.DEBUG)
logging.getLogger('spyne.protocol.xml').setLevel(logging.DEBUG)
# Mount the application
cherrypy.tree.graft(wsgi_application, "/")
# Unsubscribe the default server
cherrypy.server.unsubscribe()
# Instantiate a new server object
server = cherrypy._cpserver.Server()
# Configure the server object
server.socket_host = host
server.socket_port = port
server.thread_pool = num_threads
# For SSL Support
if ssl_module is not None:
server.ssl_module = ssl_module # eg. 'pyopenssl'
server.ssl_certificate = cert # eg. 'ssl/certificate.crt'
server.ssl_private_key = key # eg. 'ssl/private.key'
server.ssl_certificate_chain = cacert # eg. 'ssl/bundle.crt'
# Subscribe this server
server.subscribe()
# Start the server engine (Option 1 *and* 2)
cherrypy.engine.start()
return cherrypy.engine.block()