Twisted의 멋진 점은 무엇입니까? [닫은]


83

Python의 Twisted 프레임 워크와 다른 프레임 워크가 비교하면 창백 하다는 이야기를 점점 더 많이 듣고 있습니다.

누구든지 이것에 대해 밝힐 수 있고 Twisted를 다른 네트워크 프로그래밍 프레임 워크와 비교할 수 있습니다.


2
아무것도 할 수없는 것 거기 그랬듯이 질문은 조금 대답하기 어렵다, 그래서 심지어 원격으로 트위스트 비교 것을. 어떤 대안을 고려하고 있습니까?
Sven Marnach 2011 년

1
@Sven Python 개발자도 아니고, Twisted가 선언 된 것만 큼 훌륭하게 만드는 것이 무엇인지 궁금합니다.
Anton Gogolev 2011 년

2
@Sven Marnach : 문제 도메인에 따라 다릅니다. 예를 들어 gevent"점쟁이"응용 프로그램에 대한 Twisted의 대안입니다. blip.tv/file/4883016
jfs

답변:


131

Twisted에는 멋지다고 생각할 수있는 다양한 측면이 있습니다.

Twisted에는 많은 프로토콜 구현이 포함되어있어 HTTP , FTP , SMTP, POP3, IMAP4 등 일부 원격 시스템 (대부분의 경우 클라이언트 또는 서버)과 통신하는 데 사용할 수있는 API가있을 가능성이 더 높습니다. , DNS , IRC, MSN, OSCAR, XMPP / Jabber , telnet, SSH , SSL, NNTP , 또는 Finger 또는 ident와 같은 정말 모호한 프로토콜 중 하나 또는 DJB의 netstrings 와 같은 낮은 수준의 프로토콜 구축 프로토콜 중 하나 , 단순 회선 지향 프로토콜 , 또는 Perspective Broker (PB) 나 Twisted의 사용자 지정 프로토콜 중 하나AMP (Asynchronous Messaging Protocol) .

Twisted의 또 다른 멋진 점은 이러한 저수준 프로토콜 구현 위에 사용하기 쉬운 추상화를 찾을 수 있다는 것입니다. 예를 들어, HTTP 서버를 작성할 때 Twisted Web은 요청에 응답하는 방법을 정의하기 위해 Python 객체에서 URL 계층 구조를 구성 할 수 있는 "리소스"추상화 를 제공 합니다 .

이 모든 기능은 네트워크에서 차단하여 구현되는 기능이 없기 때문에 협력 API와 연결되어 있으므로 수행 하려는 모든 작업에 대해 스레드 를 시작할 필요가 없습니다 . 이는 사람들이 종종 Twisted에 귀속되는 확장성에 기여합니다 (애플리케이션이 전체 호스트 클러스터를 사용하도록 확장 할 수있는 종류가 아니라 단일 컴퓨터 만 포함하는 종류의 확장 성 임에도 불구하고). 단일 스레드의 연결은 단일 연결에 대해 각각 수천 개의 스레드를 갖는 것보다 더 잘 작동하는 경향이 있습니다.

스레딩을 피하는 것은 테스트 및 디버깅에도 유용합니다 (따라서 일반적으로 안정성). 일반적인 Twisted 기반 프로그램에는 선점 컨텍스트 전환이 없기 때문에 일반적으로 잠금에 대해 걱정할 필요가 없습니다. 발생하는 다른 네트워크 이벤트의 순서에 따라 달라지는 경쟁 조건은 해당 네트워크 이벤트를 시뮬레이션하여 쉽게 단위 테스트 할 수 있습니다 (컨텍스트 전환 시뮬레이션은 대부분의 스레딩 라이브러리에서 제공하는 기능이 아님).

Twisted는 또한 품질에 정말로 관심이 있습니다 . 따라서 Twisted 릴리스에서는 회귀거의 찾을없으며 , 일반적인 방식으로 사용하지 않더라도 대부분의 API는 작동합니다. 방법). 이는 지난 3 년 또는 4 년 동안 Twisted (또는 수정 된)에 추가 된 모든 코드에 특히 해당됩니다. 그 이후로 100 % 라인 적용 범위가 최소 테스트 요구 사항 이었기 때문입니다.

종종 간과되는 Twisted의 또 다른 강점은 10 년 동안 다양한 플랫폼의 단점 을 파악한 것 입니다. 다른 플랫폼에는 문서화되지 않은 소켓 오류가 많이 있으며 처리는 고사하고 존재한다는 사실을 배우기가 정말 어렵습니다. Twisted는 점점 더 많은 것들을 다루었 고,이 시점에서 꽤 좋습니다. 젊은 프로젝트는 이런 경험이 없기 때문에 여러분이 아닌 여러분이 출시 한 프로젝트의 사용자에게만 발생하는 모호한 실패 모드를 놓칩니다.

즉, 내가 Twisted에 대해 가장 멋진 점은 정말 지루한 많은 문제를 무시하고 흥미롭고 재미있는 것에 집중할 수있게 해주는 꽤 지루한 라이브러리라는 것입니다. :)


1
리소스 추상화에 대해 제공 한 링크에서 제대로 문서화되지 않은 것처럼 보입니다. 그러나 좋은 답변을 주셔서 감사합니다.
vinipsmaker 2014 년

한 가지 좋은 점은 "문서화되지 않은 소켓 오류"에 대해 설명하는 것입니다. 좋은 설명입니다. 감사.
Haranadh

저는 Twisted와 Django를 한동안 사용해 왔으며 Django를 Twisted로 대체 할 수있는 시점에 도달했습니다. 이상하게 들리지만 프론트 엔드 응용 프로그램이 필요하고 Twisted에서 모든 프로토콜을 정의하고 일부 ORM을 사용하여 데이터베이스를 관리합니다. 그러나 나는 비틀림을 한 가지만 할 수 있도록 상자에 넣지 않는 프레임 워크라고 생각합니다.
Durodola Opemipo

9

글쎄, 아마도 취향에 따른 것입니다.

Twisted를 사용하면이 작업을 수행하는 데 필요한 모든 것에 대해 걱정하지 않고도 이벤트 기반 네트워크 서버 / 클라이언트를 쉽게 만들 수 있습니다. 그리고 MIT 라이선스 덕분에 Twisted는 거의 모든 곳에서 사용할 수 있습니다. 하지만 벤치마킹을하지 않았기 때문에 어떻게 확장되는지 모르겠지만 꽤 좋은 것 같아요.

또 다른 장점은 Twisted Projects로 , 원하는 대부분의 서버 / 서비스를 구현하는 방법을 빠르게 확인할 수 있습니다.

Twisted에는 몇 가지 훌륭한 문서 가 있습니다. 몇 주 전에 시작했을 때 작동하는 프로토 타입을 빠르게 얻을 수있었습니다.

파이썬 장면에 아주 새로운 것은 내가 틀렸다면 나를 수정하십시오.


8
Twisted를 시작할 때의 큰 장점 중 하나는 Twisted 자체가 설계된 방식으로 인해 결코 발생하지 않는 확장 성 문제가 많다는 것입니다. 그것은 당신이 스스로 발을 쏠 수있는 새롭고 창조적 인 방법을 발견, 대신 먼저 네트워크 응용 프로그램 :) 구축 할 때 그렇게 할 모든 일상적인 방법을 재발견에 착수 할 수 있습니다
ncoghlan

예, Twisted와 함께 일하는 초심자로서 제가 빨리 발견 한 것입니다. 그리고 저는 아키텍처 가 제가 꽤 광범위하게 사용한 Netty [ jboss.org/netty ]를 떠올리게하는 방식을 좋아합니다. 그래서 사고 방식을 고르는 것이 매우 빨랐습니다.
Johann du Toit 2011 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.