如何在Flask Web服务Python文件中设置最大并发打开文件数
在Python脚本中设置文件描述符限制
可以直接在Python代码里修改文件描述符的限制,无需手动执行ulimit命令,核心是用Python标准库的resource模块操作系统资源限制。
具体实现代码
在Flask服务启动前添加以下代码:
import resource from flask import Flask # 调整文件描述符限制 def set_file_descriptor_limit(new_limit): soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE) # 优先尝试设置软限制,若需要提升硬限制则需root权限 if new_limit <= hard: resource.setrlimit(resource.RLIMIT_NOFILE, (new_limit, hard)) print(f"文件描述符软限制已设置为 {new_limit}") else: # 仅root用户可以修改硬限制 try: resource.setrlimit(resource.RLIMIT_NOFILE, (new_limit, new_limit)) print(f"文件描述符硬/软限制均已设置为 {new_limit}") except PermissionError: print(f"权限不足:无法将限制提升至 {new_limit},当前硬限制为 {hard}") # 调用设置函数,目标值100000 set_file_descriptor_limit(100000) # 初始化Flask服务 app = Flask(__name__) @app.route('/') def hello(): return "Hello World!" if __name__ == '__main__': app.run()
关键注意事项
- 权限差异:普通用户只能将软限制调整到系统预设的硬限制以内;若要突破硬限制,必须以root用户身份运行脚本,或者先修改系统全局配置(比如
/etc/security/limits.conf)提升硬限制。 - 作用范围:该设置仅对当前Python进程及其子进程生效,不会改变系统全局的默认限制。
- 系统配置兜底:如果普通用户运行时遇到硬限制不足的情况,需要修改系统配置文件:
在/etc/security/limits.conf中添加两行:
替换username soft nofile 100000 username hard nofile 100000username为实际运行脚本的用户,保存后重启会话或服务器生效。
内容的提问来源于stack exchange,提问作者Amrmsmb
相关产品推荐
相关产品推荐

