本文整理汇总了Python中resource.RLIMIT_NOFILE属性的典型用法代码示例。如果您正苦于以下问题:Python resource.RLIMIT_NOFILE属性的具体用法?Python resource.RLIMIT_NOFILE怎么用?Python resource.RLIMIT_NOFILE使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类resource
的用法示例。
在下文中一共展示了resource.RLIMIT_NOFILE属性的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: increase_limit_nofiles
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def increase_limit_nofiles():
soft_limit, hard_limit = getrlimit(RLIMIT_NOFILE)
desired_limit = 6000 # This should be comfortably larger than the product of services and regions
if hard_limit < desired_limit:
print("-" * 80, file=stderr)
print(
"WARNING!\n"
"Your system limits the number of open files and network connections to {}.\n"
"This may lead to failures during querying.\n"
"Please increase the hard limit of open files to at least {}.\n"
"The configuration for hard limits is often found in /etc/security/limits.conf".format(
hard_limit, desired_limit
),
file=stderr
)
print("-" * 80, file=stderr)
print(file=stderr)
target_soft_limit = min(desired_limit, hard_limit)
if target_soft_limit > soft_limit:
print("Increasing the open connection limit \"nofile\" from {} to {}.".format(soft_limit, target_soft_limit))
setrlimit(RLIMIT_NOFILE, (target_soft_limit, hard_limit))
print("")
示例2: test_clean_fds_sanity
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def test_clean_fds_sanity(self):
"""
If the process limit for file descriptors is very high (> 4096), then
we only close 4096 file descriptors.
"""
closed_fds = []
with patch("os.close", side_effect=closed_fds.append) as close_mock:
with self.mock_getrlimit(4100) as getrlimit_mock:
clean_fds()
getrlimit_mock.assert_called_once_with(resource.RLIMIT_NOFILE)
expected_fds = list(range(3, 4096))
calls = [call(i) for i in expected_fds]
close_mock.assert_has_calls(calls, any_order=True)
self.assertEqual(closed_fds, expected_fds)
示例3: test_ignore_OSErrors
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def test_ignore_OSErrors(self):
"""
If os.close raises an OSError, it is ignored and we continue to close
the rest of the FDs.
"""
closed_fds = []
def remember_and_throw(fd):
closed_fds.append(fd)
raise OSError("Bad FD!")
with patch("os.close", side_effect=remember_and_throw) as close_mock:
with self.mock_getrlimit(10) as getrlimit_mock:
clean_fds()
getrlimit_mock.assert_called_once_with(resource.RLIMIT_NOFILE)
expected_fds = list(range(3, 10))
calls = [call(i) for i in expected_fds]
close_mock.assert_has_calls(calls, any_order=True)
self.assertEqual(closed_fds, expected_fds)
示例4: report_resource_limits
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def report_resource_limits(logger: logging.Logger) -> None:
resources = [
('CPU time (seconds)', resource.RLIMIT_CPU),
('Heap size (bytes)', resource.RLIMIT_DATA),
('Num. process', resource.RLIMIT_NPROC),
('Num. files', resource.RLIMIT_NOFILE),
('Address space', resource.RLIMIT_AS),
('Locked address space', resource.RLIMIT_MEMLOCK)
]
resource_limits = [
(name, resource.getrlimit(res)) for (name, res) in resources
]
resource_s = '\n'.join([
'* {}: {}'.format(res, lim) for (res, lim) in resource_limits
])
logger.info("resource limits:\n%s", indent(resource_s, 2))
示例5: bump_rlimit_nofile
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def bump_rlimit_nofile() -> None:
try:
fno_soft, fno_hard = resource.getrlimit(resource.RLIMIT_NOFILE)
except resource.error:
logger.warning('could not read RLIMIT_NOFILE')
else:
if fno_soft < defines.EDGEDB_MIN_RLIMIT_NOFILE:
try:
resource.setrlimit(
resource.RLIMIT_NOFILE,
(min(defines.EDGEDB_MIN_RLIMIT_NOFILE, fno_hard),
fno_hard))
except resource.error:
logger.warning('could not set RLIMIT_NOFILE')
示例6: start_fuse
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def start_fuse():
parser = argparse.ArgumentParser(prog="GitFS")
args = parse_args(parser)
try:
merge_worker, fetch_worker, router = prepare_components(args)
except:
return
if args.max_open_files != -1:
resource.setrlimit(
resource.RLIMIT_NOFILE, (args.max_open_files, args.max_open_files)
)
# ready to mount it
if sys.platform == "darwin":
FUSE(
router,
args.mount_point,
foreground=args.foreground,
allow_root=args.allow_root,
allow_other=args.allow_other,
fsname=args.remote_url,
subtype="gitfs",
)
else:
FUSE(
router,
args.mount_point,
foreground=args.foreground,
nonempty=True,
allow_root=args.allow_root,
allow_other=args.allow_other,
fsname=args.remote_url,
subtype="gitfs",
)
示例7: test_above_fd_setsize
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def test_above_fd_setsize(self):
# A scalable implementation should have no problem with more than
# FD_SETSIZE file descriptors. Since we don't know the value, we just
# try to set the soft RLIMIT_NOFILE to the hard RLIMIT_NOFILE ceiling.
soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
try:
resource.setrlimit(resource.RLIMIT_NOFILE, (hard, hard))
self.addCleanup(resource.setrlimit, resource.RLIMIT_NOFILE,
(soft, hard))
NUM_FDS = min(hard, 2**16)
except (OSError, ValueError):
NUM_FDS = soft
# guard for already allocated FDs (stdin, stdout...)
NUM_FDS -= 32
s = self.SELECTOR()
self.addCleanup(s.close)
for i in range(NUM_FDS // 2):
try:
rd, wr = self.make_socketpair()
except OSError:
# too many FDs, skip - note that we should only catch EMFILE
# here, but apparently *BSD and Solaris can fail upon connect()
# or bind() with EADDRNOTAVAIL, so let's be safe
self.skipTest("FD limit reached")
try:
s.register(rd, selectors.EVENT_READ)
s.register(wr, selectors.EVENT_WRITE)
except OSError as e:
if e.errno == errno.ENOSPC:
# this can be raised by epoll if we go over
# fs.epoll.max_user_watches sysctl
self.skipTest("FD limit reached")
raise
self.assertEqual(NUM_FDS // 2, len(s.select()))
示例8: update_valid_fds
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def update_valid_fds():
# Collect all valid fds, so we can close them in job processes
global valid_fds
valid_fds = []
from fcntl import fcntl, F_GETFD
from resource import getrlimit, RLIMIT_NOFILE
for fd in range(3, getrlimit(RLIMIT_NOFILE)[0]):
try:
fcntl(fd, F_GETFD)
valid_fds.append(fd)
except Exception:
pass
示例9: thread_db
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def thread_db(obj):
import socket
import time
global db_instance
timeout = 60
socket.setdefaulttimeout(timeout)
last_rows = []
db_instance = obj()
shell.log_shadowsocks_version()
try:
import resource
logging.info(
'current process RLIMIT_NOFILE resource: soft %d hard %d' %
resource.getrlimit(
resource.RLIMIT_NOFILE))
except:
pass
try:
while True:
load_config()
try:
db_instance.push_db_all_user()
rows = db_instance.pull_db_all_user()
db_instance.del_server_out_of_bound_safe(last_rows, rows)
db_instance.detect_text_ischanged = False
db_instance.detect_hex_ischanged = False
last_rows = rows
except Exception as e:
trace = traceback.format_exc()
logging.error(trace)
# logging.warn('db thread except:%s' % e)
if db_instance.event.wait(60) or not db_instance.is_all_thread_alive():
break
if db_instance.has_stopped:
break
except KeyboardInterrupt as e:
pass
db_instance.del_servers()
ServerPool.get_instance().stop()
db_instance = None
示例10: sys_dup2
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def sys_dup2(self, fd: int, newfd: int) -> int:
"""
Duplicates an open fd to newfd. If newfd is open, it is first closed
:param fd: the open file descriptor to duplicate.
:param newfd: the file descriptor to alias the file described by fd.
:return: newfd.
"""
try:
f = self._get_fdlike(fd)
except FdError as e:
logger.info("sys_dup2: fd ({fd}) is not open. Returning -{errorcode(e.err)}")
return -e.err
soft_max, hard_max = self._rlimits[resource.RLIMIT_NOFILE]
if newfd >= soft_max:
logger.info(
f"sys_dup2: newfd ({newfd}) is above max descriptor table size ({soft_max})"
)
return -errno.EBADF
if self._is_fd_open(newfd):
self._close(newfd)
self.fd_table.add_entry_at(f, fd)
logger.debug("sys_dup2(%d,%d) -> %d", fd, newfd, newfd)
return newfd
示例11: get_open_fds
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def get_open_fds(self):
fds = []
for fd in range(3, resource.RLIMIT_NOFILE):
try:
flags = fcntl.fcntl(fd, fcntl.F_GETFD)
except IOError:
continue
fds.append(fd)
return fds
# python3's unittest does not have this function, so we need to implement it ourselves
示例12: test_clean_fds_rlimit
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def test_clean_fds_rlimit(self, close_mock):
"""
L{clean_fds} cleans all non-stdio file descriptors up to the process
limit for file descriptors.
"""
with self.mock_getrlimit(10) as getrlimit_mock:
clean_fds()
calls = [call(i) for i in range(3, 10)]
close_mock.assert_has_calls(calls, any_order=True)
getrlimit_mock.assert_called_once_with(resource.RLIMIT_NOFILE)
示例13: __find_and_set_higer_system_limits
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def __find_and_set_higer_system_limits(self):
resource = get_resource_lib()
if not resource:
logger.info('System resource package is not available, cannot increase system limits')
return
for (res, res_name) in [(resource.RLIMIT_NPROC, 'number of process/threads'), (resource.RLIMIT_NOFILE, 'number of open files')]:
self.__find_and_set_higer_system_limit(res, res_name)
示例14: test_number_files
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def test_number_files(self):
nfiles = self.soft_limit(resource.RLIMIT_NOFILE, 1, 1024)
prlimit = processutils.ProcessLimits(number_files=nfiles)
self.check_limit(prlimit, 'RLIMIT_NOFILE', nfiles)
示例15: increase_open_file_limit
# 需要导入模块: import resource [as 别名]
# 或者: from resource import RLIMIT_NOFILE [as 别名]
def increase_open_file_limit():
"""
#549: in order to reduce the possibility of hitting an open files limit,
increase :data:`resource.RLIMIT_NOFILE` from its soft limit to its hard
limit, if they differ.
It is common that a low soft limit is configured by default, where the hard
limit is much higher.
"""
soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
if hard == resource.RLIM_INFINITY:
hard_s = '(infinity)'
# cap in case of O(RLIMIT_NOFILE) algorithm in some subprocess.
hard = 524288
else:
hard_s = str(hard)
LOG.debug('inherited open file limits: soft=%d hard=%s', soft, hard_s)
if soft >= hard:
LOG.debug('max open files already set to hard limit: %d', hard)
return
# OS X is limited by kern.maxfilesperproc sysctl, rather than the
# advertised unlimited hard RLIMIT_NOFILE. Just hard-wire known defaults
# for that sysctl, to avoid the mess of querying it.
for value in (hard, 10240):
try:
resource.setrlimit(resource.RLIMIT_NOFILE, (value, hard))
LOG.debug('raised soft open file limit from %d to %d', soft, value)
break
except ValueError as e:
LOG.debug('could not raise soft open file limit from %d to %d: %s',
soft, value, e)