Что так круто о Twisted?

Я все чаще слышу, что Python Twisted фреймворки и другие фреймы бледнеют в сравнении.

Может кто-нибудь пролить свет на это и, возможно, сравнить Twisted с другими структурами сетевого программирования.

Ответ 1

Есть много разных аспектов Twisted, которые вы можете найти круто.

Twisted включает в себя множество и множество реализаций протоколов, что означает, что более вероятно, что не будет API, который вы можете использовать для общения с какой-либо удаленной системой (в большинстве случаев, как с клиентом, так и с сервером) - будь то HTTP, FTP, SMTP, POP3, IMAP4, DNS, IRC, MSN, OSCAR, XMPP/Jabber, telnet, SSH, SSL, NNTP или один из действительно неясных протоколов, таких как Finger или ident, или один из протоколы построения протокола нижнего уровня, такие как DJB netstrings, простые линейные протоколы или даже один из виртуальных протоколов Twisted, таких как Перспективный брокер (PB) или Асинхронный протокол обмена сообщениями (АМР).

Еще одна интересная вещь о Twisted заключается в том, что поверх этих низкоуровневых реализаций протокола вы часто найдете абстракцию, которая несколько проще в использовании. Например, при написании HTTP-сервера Twisted Web предоставляет абстракцию "Ресурс" , которая позволяет создавать иерархии URL-адресов из объектов Python, чтобы определить, как будут реагировать запросы.

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

Избегание потоков также полезно для тестирования и отладки (и, следовательно, надежности в целом). Поскольку в типичной программе на основе Twisted нет превентивного переключения контекста, вам вообще не нужно беспокоиться о блокировке. Условия гонки, которые зависят от порядка различных событий в сети, могут быть легко протестированы с помощью симуляции этих сетевых событий (тогда как имитация контекстного переключателя не является функцией, предоставляемой большинством (any?) Библиотек потоков).

Twisted также действительно, действительно связан с качеством. Таким образом, вы редко находите регрессии в версии Twisted, и большинство API просто работают, даже если вы не используете их обычным способом (потому что мы пытаемся чтобы проверить все способы их использования, а не только общий путь). Это особенно верно для всего кода, добавленного к Twisted (или измененному) за последние 3 или 4 года, поскольку с тех пор покрытие 100% линий было минимальным требованием к тестированию.

Еще одна часто забываемая сила Twisted - это его десять лет, когда мы выяснили различные приемы . На разных платформах существует множество недокументированных ошибок сокетов, и очень трудно понять, что они существуют даже, не говоря уже о них. Twisted постепенно покрывает все больше и больше, и в этот момент это довольно хорошо. В более молодых проектах этого опыта нет, поэтому они пропускают неясные режимы сбоев, которые, вероятно, будут происходить только с пользователями любого проекта, который вы выпускаете, а не с вами.

Все, что говорят, что я считаю самым крутым в Twisted, это то, что это довольно скучная библиотека, которая позволяет мне игнорировать множество действительно скучных проблем и просто сосредоточиться на интересных и интересных вещах.:)

Ответ 2

Ну это, наверное, по вкусу.

Twisted позволяет вам легко создавать сетевые серверы/клиенты, управляемые событиями, не беспокоясь обо всем, что происходит с этим. И благодаря лицензии MIT, Twisted можно использовать практически в любом месте. Но я не проводил бенчмаркинга, поэтому я понятия не имею, как он масштабируется, но я предполагаю, что это хорошо.

Другим плюсом будет Twisted Projects, с помощью которого вы сможете быстро увидеть, как реализовать большую часть сервера/служб, которые вы хотели бы.

У Twisted также есть отличная documentation, когда я начал с нее пару недель назад, я смог быстро получить рабочий прототип.

Совершенно новый для сцены python, пожалуйста, поправьте меня, если я ошибаюсь.