Нужно подумать, как постоянно добавлять новые задачи в евентлуп, не дожидаясь выполнения текущих, а выполненные обрабатывать. Но... Даже с синхронным кодом, с постоянным запросом будет проблемы с сайтом (блокировка)
Надо начать с того, что машина, если это одно ядро, выполняет задачи последовательно. Все "одновременные" задачи исполняются за счет переключения контекста с высокой скоростью. Над голым железом есть несколько слоев абстракции: биос, пользовательская ос, интерпретатор питона. В последнем есть еще и гил. В питоне I/O задачи неблокирующиеся. Гил встречая такую старается передать управление на следующую, пока будет эта выполняться. Синхронная модель предполагает, что придется дождаться завершения запроса, получить результат и перейти к следующему. Асинхронная позволяет запустить соединение и перейти к следующей задаче. Если каждый раз устанавливать новое соединение или к разным ресурсам обращаться, это существенный прирост. Но есть же еще сеть, время обработки запроса хостом и т.д. Вот с учетом всех этих переменных и надо строить обработку
Обсуждают сегодня