트위스트(소프트웨어)

Twisted (software)
꼬임
Twisted Logo (software).svg
원저작자글리프 레프코위츠
개발자지역 사회
초기 릴리즈2002년 10월 22일, 19년 전(2002-10-22)[1]
안정된 릴리스
22.4.0[2] / 2022년 4월 11일; 3개월 전 (2022년 4월 11일)
저장소
기입처파이썬
유형이벤트 주도형 네트워크
면허증.MIT 라이선스
웹 사이트www.twistedmatrix.com Edit this on Wikidata

Twisted는 Python으로 작성이벤트 기반 네트워크 프로그래밍 프레임워크로 MIT 라이센스에 따라 라이센스가 부여됩니다.

트위스트 프로젝트는 TCP, UDP, SSL/TLS, IP 멀티캐스트, Unix 도메인 소켓, 많은 프로토콜(HTTP, XMPP, NNTP, IMAP, SSH, IRC, FTP )을 지원합니다.Twisted는 이벤트 구동 프로그래밍 패러다임을 기반으로 합니다. 즉, Twisted 사용자는 프레임워크에 의해 호출되는 짧은 콜백을 씁니다.

핵심 아이디어

프로토콜과 전송의 분리

Twisted는 논리 프로토콜(일반적으로 HTTP 또는 POP3와 같은 스트림 기반 연결 시멘틱에 의존함)과 이러한 스트림 기반 시멘틱(파일, 소켓 또는 SSL 라이브러리 등)을 지원하는 물리적 전송 계층 간의 완전한 분리를 위해 설계되었습니다.논리 프로토콜과 전송 계층 간의 연결은 정보가 논리 프로토콜 인스턴스로 전달되기 직전에 가능한 마지막 순간에 발생합니다.논리 프로토콜은 전송 계층 인스턴스에 대한 알림을 받고, 이를 사용하여 메시지를 다시 보내고 피어의 ID를 확인할 수 있습니다.프로토콜 코드에서 전송 계층에 대한 자세한 쿼리(클라이언트 측 SSL 인증서 확인 등)는 여전히 가능합니다.당연히, 전송 계층이 그러한 의미론을 지원하지 않는다면, 그러한 프로토콜 코드는 실패할 것이다(예외를 발생시킨다).

지연

Twisted 어플리케이션모델의 중심은 지연 개념입니다(미래라고 불립니다).지연은 원격 피어에서 데이터를 기반으로 하기 때문에 아직 계산되지 않은 결과를 수신하고 처리하도록 설계된 클래스의 인스턴스입니다.지연은 일반 개체와 마찬가지로 전달할 수 있지만 값을 요청할 수는 없습니다.각 지연은 콜백체인을 지원합니다.지연이 값을 취득하면 콜백체인상의 함수에 전달되어 각 콜백의 결과가 다음 콜백의 입력이 됩니다.지연을 사용하면 함수 호출의 값을 사용할 수 있게 되기 전에 함수 호출의 결과를 조작할 수 있습니다.

예를 들어 지연이 IP 주소를 포함한 문자열을 쿼드 형식으로 리모트피어로부터 반환했을 경우 콜백을 부가하여 32비트 번호로 변환할 수 있습니다.이제 지연된 사용자는 32비트 숫자를 반환하는 지연된 것으로 간주할 수 있습니다.이것에 의해, 「errbacks」(에러 핸들러라고 불리는 콜백)를 정의하는 관련 기능에 의해서, 이벤트를 기다리는 것을 멈추지 않고, 비동기 이벤트가 발생했을 때에 무엇을 실행할지를 코드로 사전에 지정할 수 있습니다.예를 들어 스레드를 사용하는 비이벤트 구동 시스템에서는 블로킹콜이 실행될 때마다 운영체제가 너무 빨리 추가 오버헤드정리 스레드를 발생시킵니다.

스레드 지원

Twisted는 스레드를 지연 소스로 사용하여 원시 스레드에 대한 추상화를 지원합니다.따라서 지연된 값이 즉시 반환되며 스레드가 완료되면 값이 수신됩니다.메인 스레드에서 실행되는 콜백을 연결할 수 있으므로 복잡한 잠금 솔루션이 필요하지 않습니다.Twisted의 지원 라이브러리에서 나온 이러한 사용 방법의 대표적인 예는 이 모델을 사용하여 데이터베이스를 호출하는 것입니다.데이터베이스 콜 자체는 외부 스레드에서 발생하지만 결과 분석은 메인 스레드에서 수행됩니다.

외부 루프 지원

트위스트는 GTK+, Qt, 코코아 의 해외 이벤트 루프와 통합될 수 있습니다(PyObjC 경유).를 통해 Python의 네이티브 라이브러리를 사용하는 것처럼 소켓당 스레드 오버헤드를 추가하지 않고 Twisted를 그래픽 사용자 인터페이스(GUI) 프로그램에서 네트워크 계층으로 사용할 수 있습니다.예를 들어 이 모델을 사용하여 본격적인 웹 서버를 GUI 프로그램과 프로세스 중에 통합할 수 있습니다.

Twisted를 사용하는 응용 프로그램

  • BuildBot의 연속 통합 시스템은 클라이언트/서버 [3]통신을 위해 Twisted에 의존합니다.
  • ITA Software는 Twisted를 [4]광범위하게 사용하는 Air Canada의 항공사 예약 시스템을 개발했습니다.
  • Mathematica, Maple, Magma, MATLAB의 오픈 소스 대체 소프트웨어인 SageMath는 트위스트 [6]서버에서 실행되는 웹 기반 인터페이스인 SageMath 노트북을 [5]가지고 있습니다.
  • Twisted는 성능상의 [8]이유로 Gevent로 대체될 때까지 Omegle 일대일 채팅[7] 서비스에서 사용되었습니다.
  • Apple Calendar Server는 NASA의 일부 내부 프로젝트와 마찬가지로 [9]Twisted를 사용합니다.
  • Conch, Secure Shell(SSH) 프로토콜 구현
  • 소셜 네트워킹 및 마이크로 블로그 사이트인 Jaiku의 원래 버전은 Twisted를 [citation needed]사용했습니다.
  • 온라인 클라우드 데이터스토어인 Fluidinfo는 내부 RPC(일부 TriftAMQP와 조합), 내부 서비스 및 외부 API에 Twisted를 광범위하게 사용합니다.
  • 파일 호스팅 서비스 Ubuntu One은 Twisted를 사용했습니다.
  • Tor Hidden Services(HS)의 HTTP 프록시인 Tor2web은 Twisted를 사용합니다.
  • 오픈소스 내부고발 프레임워크인 GlobaLeaks는 Twisted를 사용합니다.
  • 클라우드 서버 관리 웹 애플리케이션인 Cloudkick은 Twisted를 사용했습니다.이것으로 Node.js를 사용하여 다시 작성되었습니다.
  • 클라우드 텔레포니 프로바이더인 Twilio는 Twisted를 사용합니다.
  • 비디오 게임 방송 및 채팅 커뮤니티인 트위치는 [10]트위스트를 사용합니다.
  • 기상 데이터 처리 및 통합 API인 Velocity Weather는 [11]Twisted를 기반으로 합니다.
  • 웹 기반 IRC 클라이언트인qwebirc는 Twisted를 사용합니다.
  • 네트워크 관리 플랫폼인 Zenoss Core는 많은 내부 데몬 및 수집 데몬에 Twisted를 사용합니다.
  • 스크래피, 트위스트에 기반한 웹 크롤러.
  • Wikipedia 오디오 비주얼라이저인 Wikipedia 청취는 트위스트를 사용하여 이벤트를 [12]브라우저에 실시간으로 브로드캐스트합니다.
  • 분산 데이터스토어 및 분산 파일 시스템인 Tahoe-LAFS.
  • 고도모듈화된 BitTorrent 클라이언트인 Floodge는 [13]트위스트를 사용합니다.
  • PAKE를 사용한 안전한 파일 전송 도구인 Magic Wormhole.[14]

「 」를 참조해 주세요.

레퍼런스

  1. ^ Shtull-Trauring, Itamar (2002-10-22). "Twisted 1.0". twisted-python (Mailing list). Retrieved 2008-08-14.
  2. ^ https://github.com/twisted/twisted/releases/tag/twisted-22.4.0; 발행일: 2022년 4월 11일, 취득일: 2022년 4월 16일.
  3. ^ "BuildBot Manual". github.com. Archived from the original on 2012-07-29. Retrieved 2017-10-28.
  4. ^ "Python Slithers into Systems". eweek.com.
  5. ^ Sage Math #기능
  6. ^ Sage a Basic의 개요[영구 데드링크]
  7. ^ "mistah deejay". omegler.blogspot.com.
  8. ^ "Google Groups". groups.google.com.
  9. ^ "Calendar and Contacts Server". www.calendarserver.org.
  10. ^ "Twitch - Jobs". Twitch.
  11. ^ "Velocity Weather -". www.velocityweather.com.
  12. ^ A WebSocket-oriented monitor for Wikipedia (also, wikimon, wikital monsters), hatnote, 2017-09-03, retrieved 2017-09-21
  13. ^ "Deluge: build from source". dev.deluge-torrent.org. Retrieved 2020-01-08.
  14. ^ "Magic Wormhole". github.com.
  15. ^ "EventMachine". Retrieved 20 August 2011.
  16. ^ "Integrating with other Frameworks — Kivy 1.11.0.dev0 documentation". kivy.org.

외부 링크