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

async twisted, synchronous requests per domain (with delay)

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

我正在考虑调用 class 的异步扭曲,来自请求模块的请求有 delay(500) ,但随后对同一域的另一个请求使其成为 delay(250) 等等,依此类推上。

如何实现静态延迟,并为每个域 (class) 存储诸如队列之类的东西?

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

使用 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())

with await in main, 它将每 2s 打印一次,

在 nasted 中没有 await,它将每 1 秒打印一次。

在main中没有await task,它会每隔0打印一次,即使声明了asyncio.sleep

如果我们是async的新手,维护起来是完全困难的。