如何解决RAM异步消耗大量RAM的问题?

时间:2019-10-15 12:29:58

标签: python python-asyncio

在蜘蛛中通常使用这样的支柱:

 async def crawl(future, client, pool):
        futures = []
        urls = await future
        for request_future in asyncio.as_completed([request(client, url) for url in urls]):
            parse_future = loop.run_in_executor(pool, parse, (await request_future))
            futures.append(asyncio.ensure_future(crawl(parse_future, client, pool)))
        if futures:
            await asyncio.wait(futures)

一切都很好,但是当链接数量很多时,在执行对服务器的请求(请求)之后,结果将被保存,然后由线程池进行处理。

正是在存储时,消耗了大量的RAM(现在将近8 GB)。

是否可以以某种方式更改此设计,以便在请求之后立即将结果很好地处理或保存为一定数量(例如50),然后快速处理线程池。

那些。我需要将RAM消耗降低到可接受的水平,但又不能失去异步请求的好处

0 个答案:

没有答案