Форум сайта python.su
0
Хочу сделать большое количество запросов к одному сайту (порядка 1 000 000).
Если я буду использовать модуль asyncio, то насколько я понял мне нужно будет сразу набросать все задачи и скормить их event loop, а он уже будет передавать управление между различными корутинами. Мне подобный подход кажется неудобным:
1. Нет возможности установить количество конкуретно выполняющихся задач (т.е. я набросал 1 000 000 задач, но одновременно конкуретно можно выполнять не более 10).
2. Нельзя подбрасывать задачи по мере выполнения, а нужно их создать до запуска event loop.
Как решить эти вопросы?
Отредактировано AlekseyPython (Окт. 24, 2018 10:20:12)
Офлайн
1
AlekseyPython
Миллион запросов ОДНОВРЕМЕННО сделать никак не получится. Ну просто у операционной системы нет столько дескрипторов. Вы можете отправить их последовательно или параллельно некоторыми пачками и в этом случае, конечно, выгоднее делать это асинхронно
Офлайн
0
Papa_Svin
AlekseyPythonМиллион запросов ОДНОВРЕМЕННО сделать никак не получится. Ну просто у операционной системы нет столько дескрипторов. Вы можете отправить их последовательно или параллельно некоторыми пачками и в этом случае, конечно, выгоднее делать это асинхронно
Офлайн
1
AlekseyPythonВы хоть что-то знаете про веб и сетевое программирование вообще?
Я про это и задал вопрос: как создавать зачачи в процессе выполнения и как управлять нагрузкой.
Офлайн
0
Papa_SvinВ топике я задал два вопроса и спросил как их можно реализовать с помощью asyncio.
Офлайн
1
AlekseyPython
В стартовом посте нет вопросов, там есть два утверждения, которые не имеют отношения к asyncio.
Офлайн
0
Papa_Svin
AlekseyPythonВ стартовом посте нет вопросов, там есть два утверждения, которые не имеют отношения к asyncio.
Офлайн
1
AlekseyPythonЯ вас не троллю, я искренне пытаюсь понять вашу проблему, а вы не хотите её описать.
Я не понимаю зачем вы меня троллите?
Нет возможности установить количество конкуретно выполняющихся задачКакие к черту конкурентные задачи в asyncio? Этот фреймворк не имеет отношения к паралеллизму. Ну вообще никак.
Офлайн
253
Офлайн
0
doza_and
Документация вроде ясно написана.https://docs.python.org/3/library/asyncio-sync.html#asyncio.Semaphorehttps://docs.python.org/3/library/asyncio-queue.html#asyncio-queues
# Wait until the queue is fully processed. started_at = time.monotonic() await queue.join() total_slept_for = time.monotonic() - started_at
# Cancel our worker tasks. for task in tasks: task.cancel()
Отредактировано AlekseyPython (Окт. 26, 2018 11:43:50)
Офлайн