ZeroNet/src/util/Platform.py

37 lines
1.2 KiB
Python

import sys
import logging
def setMaxfilesopened(limit):
try:
if sys.platform == "win32":
import ctypes
dll = None
last_err = None
for dll_name in ["msvcr100", "msvcr110", "msvcr120"]:
try:
dll = getattr(ctypes.cdll, dll_name)
break
except OSError as err:
last_err = err
if not dll:
raise last_err
maxstdio = dll._getmaxstdio()
if maxstdio < limit:
logging.debug("%s: Current maxstdio: %s, changing to %s..." % (dll, maxstdio, limit))
dll._setmaxstdio(limit)
return True
else:
import resource
soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
if soft < limit:
logging.debug("Current RLIMIT_NOFILE: %s (max: %s), changing to %s..." % (soft, hard, limit))
resource.setrlimit(resource.RLIMIT_NOFILE, (limit, hard))
return True
except Exception as err:
logging.error("Failed to modify max files open limit: %s" % err)
return False