def set_resource_limits()

in app/source/dragen/src/dragen_qs.py [0:0]


    def set_resource_limits(self):
        # Set resource limits based on values in /etc/security.d/limits.d/99-edico.conf
        edico_limits = "/etc/security/limits.d/99-edico.conf"
        rlimit = {}
        if os.path.exists(edico_limits):
            limitsfd = open(edico_limits, 'r')
            for line in limitsfd:
                fields = line.split()
                if fields[0] == '*' and fields[2] in ['nproc', 'nofile', 'stack']:
                    res = eval("resource.RLIMIT_%s" % fields[2].upper())
                    if fields[3] == "unlimited":
                        rlimit[res] = resource.RLIM_INFINITY
                    else:
                        if fields[2] == 'stack':
                            # limits.conf file is in KB, setrlimit command takes bytes
                            rlimit[res] = int(fields[3]) * 1024
                        else:
                            rlimit[res] = int(fields[3])
        else:
            rlimit[resource.RLIMIT_NPROC] = 16384
            rlimit[resource.RLIMIT_NOFILE] = 65535
            rlimit[resource.RLIMIT_STACK] = 10240 * 1024

        for res, limit in six.iteritems(rlimit):
            printf("Setting resource %s to %s" % (res, limit))
            try:
                resource.setrlimit(res, (limit, limit))
            except Exception as e:
                msg = "Could not set resource ID %s to hard/soft limit %s (error=%s)" \
                      % (res, limit, e)
                printf(msg)
        return