for signum in signals:
faulthandler.register(signum, chain=True, file=stderr_fd)
+ _adjust_resource_limits()
replace_stdout()
support.record_original_stdout(sys.stdout)
sys.stdout.close()
sys.stdout = stdout
atexit.register(restore_stdout)
+
+
+def _adjust_resource_limits():
+ """Adjust the system resource limits (ulimit) if needed."""
+ try:
+ import resource
+ from resource import RLIMIT_NOFILE, RLIM_INFINITY
+ except ImportError:
+ return
+ fd_limit, max_fds = resource.getrlimit(RLIMIT_NOFILE)
+ # On macOS the default fd limit is sometimes too low (256) for our
+ # test suite to succeed. Raise it to something more reasonable.
+ # 1024 is a common Linux default.
+ desired_fds = 1024
+ if fd_limit < desired_fds and fd_limit < max_fds:
+ new_fd_limit = min(desired_fds, max_fds)
+ try:
+ resource.setrlimit(RLIMIT_NOFILE, (new_fd_limit, max_fds))
+ print(f"Raised RLIMIT_NOFILE: {fd_limit} -> {new_fd_limit}")
+ except (ValueError, OSError) as err:
+ print(f"Unable to raise RLIMIT_NOFILE from {fd_limit} to "
+ f"{new_fd_limit}: {err}.")
+