每个域异步扭曲,同步请求(有延迟)

时间:2019-01-29 00:36:43

标签: web-scraping async-await python-requests twisted python-3.7

假设我有10个域,但是每个域在请求之间都需要延迟(以避免dos情况和ip-banning)。

我当时在考虑异步扭曲调用一个类,来自请求模块的请求具有delay(500),但是到同一域的另一个请求使它具有delay(250),依此类推。

如何实现该静态延迟,并为每个域(类)将类似队列的内容存储在某个地方?

这是自定义的网页抓取工具,扭曲的是TCP,但这没有什么区别。我不需要代码,但需要知识。

1 个答案:

答案 0 :(得分:0)

,同时使用asyncio是用于异步,

import asyncio

async def nested(x):
    print(x)
    await asyncio.sleep(1)


async def main():
    # Schedule nested() to run soon concurrently
    # with "main()".
    for x in range(100):
        await asyncio.sleep(1)
        task = asyncio.create_task(nested(x))
        # "task" can now be used to cancel "nested()", or
        # can simply be awaited to wait until it is complete:
        await task




asyncio.run(main())

主要是 await ,它将每2秒打印一次,

不带等待的情况下,它将每隔1秒打印一次。

主要没有 await任务,即使声明了 asyncio.sleep ,它也会每0s打印一次。

如果我们是异步新手,则很难维护。