витые асинхронные синхронные запросы на домен (с задержкой) - PullRequest
0 голосов
/ 29 января 2019

допустим, у меня есть 10 доменов, но каждый домен должен иметь задержку между запросами (чтобы избежать дос ситуаций и ip-банов).

Я думал об асинхронном витом, который вызывает класс, запросы из модуля запросов имеют задержку (500), но затем другой запрос к тому же домену вызывает задержку (250) и так далее, и так далее.

Как добиться такой статической задержки и сохранить где-нибудь что-то вроде очереди для каждого домена (класса)?

Это пользовательский веб-скребок, витой является TCP, но это не должно иметь значения.Я не хочу код, но знания.

1 Ответ

0 голосов
/ 01 февраля 2019

при использовании 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 с,

без await в режиме nasted он будет печатать каждые 1 с.

без в ожидании задачи в основном, он будет печатать каждые 0 с, даже если объявлено asyncio.sleep .

Поддерживать абсолютно сложно, если мы новички в асинхронности.

...