【发布时间】:2021-12-14 10:37:25
【问题描述】:
在我的系统上(使用 python3.6.9)我得到了太多打开的文件错误。
我在 python 中执行子进程时遇到错误。
追溯:
File "/opt/KIDICAP/docengine/Objects/Watcher.py", line 99, in watch, self.check_ulimit()
File "/opt/KIDICAP/docengine/Objects/Watcher.py", line 469, in check_ulimit
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
File "/usr/lib/python3.6/subprocess.py", line 729, in __init__ restore_signals, start_new_session)
File "/usr/lib/python3.6/subprocess.py", line 1254, in _execute_child errpipe_read, errpipe_write = os.pipe()
OSError: [Errno 24] Too many open files
我试图查找它,但永久设置 ulimit 不起作用。
我什至构建了一个函数,在执行子进程之前设置 ulimit。
process = subprocess.Popen(comand1, shell=True, stdout=subprocess.PIPE)
output = process.stdout.readlines()
process.stdout.close()
process.terminate()
# print(output)
# logger.info(comand2)
process = subprocess.Popen(comand2, shell=True, stdout=subprocess.PIPE)
output = process.stdout.readlines()
process.stdout.close()
process.terminate()
# print(output)
# logger.info(comand3)
process = subprocess.Popen(comand3, shell=True, stdout=subprocess.PIPE)
output = process.stdout.readlines()
process.stdout.close()
process.terminate()
【问题讨论】:
-
请告诉我们您的问题到底是什么。您想知道如何查找“打开的文件过多”错误的原因或如何提高限制吗? (当然,我不知道你的申请,但总的来说限制是有意义的,除非非常特殊的情况,否则不应增加。)
-
我想发布一个带有该错误的帖子。并回答我自己。因为我找了很久才找到自己的解决方案。
标签: python python-3.x linux error-handling subprocess