Подтвердить что ты не робот

Tornado - это "относительно простая, неблокирующая структура веб-сервера, написанная на Python" - может несколько объяснить, что это значит?

Это, наверное, глупый вопрос, но что такое "неблокирующий веб-сервер"? Все веб-серверы являются технически неблокирующими, arent они? иначе как они могут обрабатывать одновременные соединения? Apache2 достигает этого, используя комбинацию fork() и pthreads. Как точно различаются Tornado (и Twisted)? Разве они просто устанавливают кучу сокетов в не-bocking-режим, строят список FD (или эквивалент), а затем перебирают через один большой вызов select() sys?

Где бы вы использовали такую ​​инфраструктуру, и какие преимущества они могут дать вам через Apache2 (или другие популярные серверы)? Благодаря

4b9b3361

Ответ 1

Эта статья в статье EventMachine также может дать вам подсказку:

Погруженный в традицию разветвления/ поточные веб-серверы я нашел довольно удивился, когда я присоединился к одному из исследовательские проекты в Университете Ватерлоо пару лет назад: мы сравнивали различные веб-серверы архитектуры и топ-исполнители были все управляемые событиями серверы.

Как я приставал к каждому с вопросами, Я быстро понял, почему - в окружающая среда с сотнями тысяч запрашивает второе, разветвление и контекст переключение, связанное с потоком управление становится непозволительно дорого (вилка худшая, как это копия памяти на родительском процесс каждый раз). Принимая во внимание, что сравнение, жесткий и оптимизированный цикл событий действительно светит когда дело доходит до тяжелые нагрузки.