Почему существует необходимость в Twisted?

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

Однако я кое-что не понимаю. Закрученная документация начинается с

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

Я сомневаюсь: зачем нам нужна такая управляемая событиями библиотека для создания мощных серверов, когда есть уже очень эффективные реализации различных серверов?

Разумеется, должно было быть больше, чем несколько конкретных реализаций, которые имели в виду скрученные разработчики при написании библиотеки I\O, управляемой событиями. Что это? Почему именно было выполнено скрученное?

Ответ 1

В комментарии к другому ответу вы говорите: "Каждая библиотека должна иметь...". "Предположительно" кем? Наличие прецедентов - это, безусловно, хороший способ прибить ваши требования, но это не единственный способ. Также не имеет смысла говорить о прецедентах для всего Twisted сразу. Не существует случая, который оправдывает каждый API в Twisted. Существуют сотни или тысячи различных вариантов использования, каждый из которых оправдывает меньшее или большее подразделение Twisted. Они приходят и уходят за годы развития Twisted, и не было сделано попыток сохранить их список. Я могу сказать, что я работал над частью Twisted Names, чтобы у меня была тема для бумаги, которую я представлял в то время. Я реализовал парсер vt102 в Twisted Conch, потому что я одержим терминалами и хотел, чтобы их забавный проект. И я реализовал поддержку IMAP4 в Twisted Mail, потому что я работал в компании, разрабатывающей почтовый сервер, который требовал более жесткого контроля над почтовым хранилищем, чем любой другой сервер IMAP4 в предлагаемое время.

Итак, как вы можете видеть, разные части Twisted были написаны по разным причинам (и я приводил только примеры моих собственных причин, а не причины других разработчиков).

Первоначальная причина написания программы часто не имеет большого значения в долгосрочной перспективе. Теперь код написан: Twisted Names теперь запускает DNS для многих доменных имен в Интернете, парсер vt102 помог мне получить работу, а компания, которая продвинула разработку IMAP4, не работает. Важно то, какие полезные вещи вы можете сделать с кодом сейчас. Как отмечает MattH, появившееся в результате множество функциональных возможностей привело к созданию библиотеки, которая (возможно, уникально) затрагивает широкий спектр интересных проблем.

Ответ 2

Зачем нам нужна такая управляемая событиями библиотека для написания мощных серверов, когда есть уже очень эффективные реализации различных серверов?

Итак, перефразируя: вы не можете себе представить, почему кому-то понадобится инструментарий, когда уже существуют продукты dyecast?

Я предполагаю, что вам никогда не нужно было выбивать шлюз протокола, например,
- пишите демона в локальные файлы md5 по запросу через unix-сокет
- опросить часть программного обеспечения с помощью udp и выставить статистику по http.

Я написал небольшое доказательство концепции для второго примера для вопроса здесь о SO в нескольких минутах. Я не мог этого сделать без скрутки.

Вы посмотрели: ProjectsUsingTwisted?

Ответ 3

Подробнее о "почему": (отказ от ответственности: я не являюсь разработчиком Twisted), необходимо рассмотреть Twisted high age (относительно Python's). Когда была написана Twisted, не было достаточно мощной неблокирующей сетевой/управляемой событиями библиотеки, написанной вокруг шаблона реактора (почти каждый из них использовал потоки тогда), Закрученный исходный случай был большой многопользовательской игрой, хотя особенности этой игры, кажется, несколько потеряны во времени.

Поскольку исходники, как указывает ссылка @MattH, очень большое количество различных сетевых серверов, написанных на Python, основано на Twisted.

Ответ 4

Этот разговор PyCon от создателя Twisted должен дать вам ответы.

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