Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
1import sys
2import logging
3
4
5def setMaxfilesopened(limit):
6 try:
7 if sys.platform == "win32":
8 import ctypes
9 dll = None
10 last_err = None
11 for dll_name in ["msvcr100", "msvcr110", "msvcr120"]:
12 try:
13 dll = getattr(ctypes.cdll, dll_name)
14 break
15 except OSError as err:
16 last_err = err
17
18 if not dll:
19 raise last_err
20
21 maxstdio = dll._getmaxstdio()
22 if maxstdio < limit:
23 logging.debug("%s: Current maxstdio: %s, changing to %s..." % (dll, maxstdio, limit))
24 dll._setmaxstdio(limit)
25 return True
26 else:
27 import resource
28 soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
29 if soft < limit:
30 logging.debug("Current RLIMIT_NOFILE: %s (max: %s), changing to %s..." % (soft, hard, limit))
31 resource.setrlimit(resource.RLIMIT_NOFILE, (limit, hard))
32 return True
33
34 except Exception as err:
35 logging.error("Failed to modify max files open limit: %s" % err)
36 return False