From 2a06cec5c25b0f94e6c8123cb7fb8543e44b65a6 Mon Sep 17 00:00:00 2001 From: HelloZeroNet Date: Sun, 6 Mar 2016 02:17:58 +0100 Subject: [PATCH] Rev948, Disable websocket logging, Change max files opened limit on startup --- src/Config.py | 4 +++- src/Ui/UiServer.py | 8 +++++++- src/lib/geventwebsocket/logging.py | 3 ++- src/util/Platform.py | 24 ++++++++++++++++++++++++ 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 src/util/Platform.py diff --git a/src/Config.py b/src/Config.py index c0b39271..0b020723 100644 --- a/src/Config.py +++ b/src/Config.py @@ -8,7 +8,7 @@ class Config(object): def __init__(self, argv): self.version = "0.3.6" - self.rev = 943 + self.rev = 948 self.argv = argv self.action = None self.config_file = "zeronet.conf" @@ -149,6 +149,8 @@ class Config(object): self.parser.add_argument('--disable_sslcompression', help='Disable SSL compression to save memory', type='bool', choices=[True, False], default=True) self.parser.add_argument('--keep_ssl_cert', help='Disable new SSL cert generation on startup', action='store_true') + self.parser.add_argument('--max_files_opened', help='Change maximum opened files allowed by OS to this value on startup', + default=1024, type=int, metavar='limit') self.parser.add_argument('--use_tempfiles', help='Use temporary files when downloading (experimental)', type='bool', choices=[True, False], default=False) self.parser.add_argument('--stream_downloads', help='Stream download directly to files (experimental)', diff --git a/src/Ui/UiServer.py b/src/Ui/UiServer.py index b2d8e596..745ec512 100644 --- a/src/Ui/UiServer.py +++ b/src/Ui/UiServer.py @@ -61,6 +61,11 @@ class UiServer: self.sites = SiteManager.site_manager.list() self.log = logging.getLogger(__name__) + # After WebUI started + def afterStarted(self): + from util import Platform + Platform.setMaxfilesopened(config.max_files_opened) + # Handle WSGI request def handleRequest(self, env, start_response): path = env["PATH_INFO"] @@ -120,6 +125,7 @@ class UiServer: self.server = WSGIServer((self.ip.replace("*", ""), self.port), handler, handler_class=UiWSGIHandler, log=self.log) self.server.sockets = {} + self.afterStarted() try: self.server.serve_forever() except Exception, err: @@ -149,4 +155,4 @@ class UiServer: self.server.socket.close() self.server.stop() - time.sleep(1) + time.sleep(1) \ No newline at end of file diff --git a/src/lib/geventwebsocket/logging.py b/src/lib/geventwebsocket/logging.py index 554ca02d..ac0c9692 100644 --- a/src/lib/geventwebsocket/logging.py +++ b/src/lib/geventwebsocket/logging.py @@ -1,6 +1,6 @@ from __future__ import absolute_import -from logging import getLogger, StreamHandler, getLoggerClass, Formatter, DEBUG +from logging import getLogger, StreamHandler, getLoggerClass, Formatter, DEBUG, INFO def create_logger(name, debug=False, format=None): @@ -27,5 +27,6 @@ def create_logger(name, debug=False, format=None): del logger.handlers[:] logger.__class__ = DebugLogger logger.addHandler(handler) + logger.setLevel(INFO) return logger diff --git a/src/util/Platform.py b/src/util/Platform.py new file mode 100644 index 00000000..f7b07e51 --- /dev/null +++ b/src/util/Platform.py @@ -0,0 +1,24 @@ +import sys +import logging + + +def setMaxfilesopened(limit): + try: + if sys.platform == "win32": + import win32file + maxstdio = win32file._getmaxstdio() + if maxstdio < limit: + logging.debug("Current maxstdio: %s, changing to %s..." % (maxstdio, limit)) + win32file._setmaxstdio(limit) + return True + else: + import resource + soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE) + if soft < limit: + logging.debug("Current RLIMIT_NOFILE: %s, changing to %s..." % (soft, limit)) + resource.setrlimit(resource.RLIMIT_NOFILE, (soft, hard)) + return True + + except Exception, err: + logging.error("Failed to modify max files open limit: %s" % err) + return False