Practical Guide to not Block the Event Loop
Гайд по неблокирующей работе с event loop. Event Loop можно нечаянно заблокировать каким-нибудь сложным вычислением, что приведет к деградации работы сервиса.
Чтобы этого избежать можно использовать 2 решения.
Первое решение: сделать ресурсоёмкий код асинхронным, т.е. чтобы он выполнялся не за один "тик" цикла событий, а сделать так чтобы выполнялся итерационно с постановкой задачи в цикл событий. Тогда ресурсоёмий код не будет блокировать цикл событий и движок сможет разобрать дргуие события
Второе решение: вынести ресурсоёмкий код в worker. У worker'ов есть свои ограничения (недавно в канале была хорошая ссылка на этот счет), но зато есть один неоспоримый плюс - worker не блокирует цикл событий.