From 70ea21dab89a1d06ef18e2b51c3855ac2a5ed7ab Mon Sep 17 00:00:00 2001 From: Griatch Date: Thu, 23 May 2013 23:57:21 +0200 Subject: [PATCH] Added settings for webserver threadpool limits. --- src/server/server.py | 23 ++++++++--------------- src/settings_default.py | 4 ++++ 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/server/server.py b/src/server/server.py index 1e33daf04a..5492bdecbc 100644 --- a/src/server/server.py +++ b/src/server/server.py @@ -348,27 +348,20 @@ if WEBSERVER_ENABLED: # start a thread pool and define the root url (/) as a wsgi resource # recognized by Django - threads = threadpool.ThreadPool() + threads = threadpool.ThreadPool(minthreads=max(1, settings.WEBSERVER_THREADPOOL_LIMITS[0]), + maxthreads=max(1, settings.WEBSERVER_THREADPOOL_LIMITS[1])) web_root = DjangoWebRoot(threads) # point our media resources to url /media web_root.putChild("media", static.File(settings.MEDIA_ROOT)) web_site = server.Site(web_root, logPath=settings.HTTP_LOG_FILE) - for interface in WEBSERVER_INTERFACES: - if ":" in interface: - print " iPv6 interfaces not yet supported" - continue - ifacestr = "" - if interface != '0.0.0.0' or len(WEBSERVER_INTERFACES) > 1: - ifacestr = "-%s" % interface - for proxyport, port in WEBSERVER_PORTS: - # create the webserver (we only need the port for this) - pstring = "%s:%s" % (ifacestr, port) - webserver = WSGIWebServer(threads, port, web_site, interface=interface) - webserver.setName('EvenniaWebServer%s' % pstring) - EVENNIA.services.addService(webserver) + for proxyport, serverport in WEBSERVER_PORTS: + # create the webserver (we only need the port for this) + webserver = WSGIWebServer(threads, serverport, web_site, interface='127.0.0.1') + webserver.setName('EvenniaWebServer%s' % serverport) + EVENNIA.services.addService(webserver) - print " webserver%s: %s" % (ifacestr, port) + print " webserver: %s" % serverport if IRC_ENABLED: diff --git a/src/settings_default.py b/src/settings_default.py index 13cc9e620e..745a8c4a62 100644 --- a/src/settings_default.py +++ b/src/settings_default.py @@ -55,6 +55,10 @@ WEBSERVER_INTERFACES = ['0.0.0.0'] # IP addresses that may talk to the server in a reverse proxy configuration, # like NginX. UPSTREAM_IPS = ['127.0.0.1'] +# The webserver uses threadpool for handling requests. This will scale +# with server load. Set the minimum and maximum number of threads it +# may use as (min, max) (must be > 0) +WEBSERVER_THREADPOOL_LIMITS = (1, 20) # Start the evennia ajax client on /webclient # (the webserver must also be running) WEBCLIENT_ENABLED = True