2010-06-04 2 views
7

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

+0

Простые розетки? Реализация скручена. –

ответ

26

Я стою на то, что я написал в Python in a Nutshell (2-е издание стр 540.):

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

Просить ли это невероятно богатая и мощная база «проще в использовании», чем «простые сокеты» немного как спрашивать, если автомобиль «проще в использовании», чем винт: какой странный вопрос!

Автомобили изготовлены с винтами (между прочим) и не могут быть «простыми в использовании» - просто потому, что винт делает так мало, машина делает так много.

Но если вы хотите добраться от А до В (и, возможно, нести пассажиров, багажа, домашних животных, ...), винт не поможет многого (если только вы не собираетесь строить автомобиль с нуля;).

Конечно, автомобили - это не единственный способ добраться от A до B, так же, как искривленный - это не единственный способ построить сетевые системы на Python. Лошадь и багги (например, asyncore) причудливые и забавные, хотя и менее практичные; высокоскоростной поезд (например, tornado) может быть проще в использовании и, по крайней мере, так же быстро, но гораздо менее гибко; и для различных специализированных целей вы можете предпочесть все виды других перевозочных средств: от унициклов до круизных судов (например, на Python и для сетей, всех видов других пакетов, от paramiko до dnspython) - все они будут включать винты в составе их компоненты (например, все будут включать сокеты как часть того, как они создаются), ни один из них не будет столь же прост в использовании, как «простые сокеты», каждый (в своем собственном диапазоне применимости) сделает для вас намного больше, чем «простые сокеты» сами по себе могли бы.

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

+0

Ну, я просто хочу учиться. Вот почему я спросил: b Я хочу научиться строить машину! : P – Jake

+1

Надеюсь, что есть «Скрученный в двух словах». Мне нравится книга «Python в двух словах» и «Поваренная книга Python». Я все еще не умею хорошо писать код с помощью twistedmatrix, даже заканчивая чтение текущей Twisted book и Twisted document ... – sunqiang

+0

@ Jake, научиться строить автомобили - замечательная работа. К сожалению, для него нет действительно хорошего учебника (хотя бы не на основе Python), но вы можете постепенно продвигаться через изучение сокетов, протоколов TCP/IP, протоколов более высокого уровня поверх них, реализацию некоторых протоколов в стандарте Python (простой ваниль, без многозадачности), затем потоки с асинхронными системами, асинхронные, скрученные (в каждом случае смешивание «как это использовать для задачи X» с «как это реализовано внутри страны и почему они выбрали это дизайнерское решение»). - –

4

Twisted - это структура параллелизма. Это позволяет вам манипулировать несколькими задачами в одном приложении без использования потоков/процессов. Он делает это с помощью асинхронной системы, управляемой событиями, и особенно хорош в сетевых приложениях. Асинхронный код обычно имеет тенденцию быть немного «отличным» от обычного материала, поскольку поток не является явным, и все происходит на основе внешних событий. Это может сбить с толку, но оно работает. Twisted является, возможно, самой зрелой Python асинхронной библиотекой параллелизма, поэтому, если это то, что вы планируете делать, скрученная хорошая ставка.

«Простые сокеты», как вы их ставите, являются примитивами связи и не очень похожи на скрученные. Что ты пытаешься сделать?

0

Twisted был впервые выпущен в 2002 году и сильно раздулся с тех пор; (это сложная тема, и многие люди утверждают, что это хорошо и необходимо в рамках). Однако для тех, кто приближается к проекту, теперь это может быть немного сложнее. Однако есть варианты, если вы продвигаетесь к асинхронным фреймворкам. Я нашел этот блог интересным: http://nichol.as/asynchronous-servers-in-python. Сравнительные тесты, примеры кода сами по себе довольно интересны для сравнения.

+3

скрученный тяжелый, я согласен, но не раздулся. Его очень освобождающее чувство, когда вы что-то ищете, и находите его внутри витой, уже реализованной, проверенной и готовой к работе. –

Смежные вопросы