Я пытаюсь делать запросы с хромом без головы, используя pyppeteer.Но я продолжаю получать «OSError: [Errno 24] Too many open files» после определенного количества запросов.Я проверил открытые ресурсы процесса python с помощью losf и обнаружил, что с каждым новым запросом появляется новая строка, подобная следующей
python3 14840 root 11r FIFO 0,8 0t0 64208510 pipe
Может кто-нибудь сказать мне, какие ресурсы не закрываются?Код, который вызывает эту ошибку, ниже
def search(self, search_path):
async def main(url):
browser = await launch(args=['--no-sandbox'], handleSIGINT=False, handleSIGTERM=False, handleSIGHUP=False)
page = await browser.newPage()
await page.setJavaScriptEnabled(False)
try:
response = await page.goto(url, options={"timeout": 50000})
except pyppeteer.errors.TimeoutError:
pass
src = await page.content()
await browser.close()
return src
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
url = "https://www.example.com" + search_path
val = asyncio.get_event_loop().run_until_complete(main(url))
loop.close()
EDIT
Мне удалось закрыть открытые каналы, вызвав
browser.process.communicate()