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

StackOverflow https://stackoverflow.com/questions/1419624

  •  07-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top