Вы можете использовать одну из этих платформ, если вы хотите написать код, который работает в сети.
Например, если вы собирались написать многопользовательскую видеоигру , «настройка программы Java ... для отправки потока для каждого запроса», вероятно, не вариант; манипулирование многими потоками является феноменально сложным, а также плохо работает. Не говоря уже о том, что «просто порождаем кучу потоков» отсутствует куча инструментов управления, которые Twisted et. и др. иметь, как twistd
, который обрабатывает журналирование, демонизацию, запуск и завершение работы и т. д.
Или, если вы хотите написать систему автоматизации сборки , была бы полезна возможность асинхронного вызова и управления подпроцессами . Если вы запускаете процесс асинхронно, вы можете легко убить этот процесс и корректно обработать его выход. Если вы породите его, запустив поток и заблокировав его, вы не сможете легко его остановить, поскольку остановка потока по своей сути небезопасна .
EventMachine и Twisted могут использоваться для написания программ на стороне клиента; возможно, вы пишете приложение с графическим интерфейсом, которое не является веб-интерфейсом, и вы хотите использовать одну и ту же реализацию протокола на клиенте и сервере.
Поскольку вы можете использовать асинхронные фреймворки в самых разных контекстах, возможно, вы захотите использовать их в веб-приложении просто потому, что у вас есть существующий библиотечный код, написанный для какого-то другого приложения с использованием вашей асинхронной фреймворк, который вы хотите использовать. Или вы можете захотеть повторно использовать код вашего веб-приложения в каком-то гипотетическом будущем не-веб-приложении. В этом случае это не так сильно отличается от использования Apache или Tomcat или чего-либо еще с точки зрения функциональности, это просто дает вам более общий, многократно используемый способ организации вашей программы.