Я все частіше чую, що Twisted framework Python гірські породи та інші фреймворки бліді в порівнянні.
Хтось може пролити це світло і, можливо, порівняти Twisted з іншими мережевими структурами програмування.
Я все частіше чую, що Twisted framework Python гірські породи та інші фреймворки бліді в порівнянні.
Хтось може пролити це світло і, можливо, порівняти 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, або один із протоколів побудови протоколів нижчого рівня, таких як мережеві мережі 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, будь ласка, виправте мене, якщо я помиляюся.