36 lines
1.2 KiB
Python
36 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
|