Я все чаще слышу, что фреймворк Python Twisted и другие фреймворки бледнеют по сравнению с ним.
Может ли кто-нибудь пролить свет на это и, возможно, сравнить Twisted с другими средами сетевого программирования.
Я все чаще слышу, что фреймворк Python Twisted и другие фреймворки бледнеют по сравнению с ним.
Может ли кто-нибудь пролить свет на это и, возможно, сравнить Twisted с другими средами сетевого программирования.
gevent
это альтернатива Twisted для приложения "гадалка" blip.tv/file/4883016
Ответы:
В Twisted есть много разных аспектов, которые могут вам понравиться.
Twisted включает в себя множество реализаций протокола, а это означает, что, скорее всего, будет API, который вы можете использовать для связи с какой-либо удаленной системой (в большинстве случаев клиент или сервер) - будь то HTTP , FTP , SMTP, POP3, IMAP4 , DNS , IRC, MSN, OSCAR, XMPP / Jabber , telnet, SSH , SSL, NNTP или один из действительно малоизвестных протоколов, таких как Finger или ident, или один из протоколов построения протоколов нижнего уровня, например netstrings DJB , просто линейно-ориентированные протоколы или даже один из настраиваемых протоколов Twisted, таких как Perspective Broker (PB) илиПротокол асинхронного обмена сообщениями (AMP) .
Еще одна интересная особенность Twisted заключается в том, что поверх этих низкоуровневых реализаций протокола вы часто найдете абстракцию, которую несколько проще использовать. Например, при написании HTTP-сервера Twisted Web предоставляет абстракцию «Ресурс», которая позволяет создавать иерархии URL-адресов из объектов Python для определения того, как будут отвечать запросы.
Все это связано с взаимодействующими API-интерфейсами, в основном из-за того, что ни одна из этих функций не реализуется путем блокировки в сети, поэтому вам не нужно запускать поток для каждой операции, которую вы хотите выполнить . Это способствует масштабируемости, которую люди часто приписывают Twisted (хотя это вид масштабируемости, который включает только один компьютер, а не тот вид масштабируемости, который позволяет вашему приложению расти, чтобы использовать целый кластер хостов), потому что Twisted может обрабатывать тысячи соединения в одном потоке, что, как правило, работает лучше, чем тысячи потоков, каждый для одного соединения.
Избегание многопоточности также полезно для тестирования и отладки (и, следовательно, надежности в целом). Поскольку в типичной программе на основе Twisted упреждающее переключение контекста отсутствует, вам обычно не нужно беспокоиться о блокировке. Условия гонки, которые зависят от порядка возникновения различных сетевых событий, могут быть легко протестированы модулем путем моделирования этих сетевых событий (в то время как моделирование переключения контекста не является функцией, предоставляемой большинством (любыми?) Библиотеками потоков).
Twisted также очень заботится о качестве . Так что вы редко встретите регрессии в выпуске Twisted, и большинство API-интерфейсов просто работают, даже если вы не используете их обычным способом (потому что мы пытаемся протестировать все способы их использования, а не только обычные путь). Это особенно верно для всего кода, добавленного (или измененного) в Twisted за последние 3 или 4 года, поскольку с тех пор минимальным требованием к тестированию было 100% покрытие строк.
Другой часто забывают сила Twisted является его десять лет выясняя различные платформы причуды . На разных платформах существует множество недокументированных ошибок сокетов, и очень сложно понять, что они вообще существуют, не говоря уже об их устранении. Twisted постепенно охватывает все больше и больше из них, и на данный момент это неплохо. В более молодых проектах такого опыта нет, поэтому они пропускают неясные режимы сбоя, которые, вероятно, случатся только с пользователями любого проекта, который вы выпускаете, а не с вами.
Все это говорит о том, что мне больше всего нравится в Twisted то, что это довольно скучная библиотека, которая позволяет мне игнорировать множество действительно скучных проблем и просто сосредоточиться на интересных и забавных вещах. :)
Ну это наверное по вкусу.
Twisted позволяет легко создавать управляемые событиями сетевые серверы / клиенты, не беспокоясь обо всем, что для этого нужно. А благодаря лицензии MIT Twisted можно использовать практически где угодно. Но я не проводил никаких тестов, поэтому понятия не имею, как они масштабируются, но думаю, неплохо.
Еще один плюс - это Twisted Projects , с помощью которых вы можете быстро увидеть, как реализовать большинство серверов / сервисов, которые вам нужны.
У Twisted также есть отличная документация , когда я начал с ней пару недель назад, я смог быстро получить рабочий прототип.
Совершенно новый для сцены Python, пожалуйста, поправьте меня, если я ошибаюсь.