Twisted Matrix

Click here to load reader

download Twisted Matrix

of 239

  • date post

    30-Nov-2014
  • Category

    Documents

  • view

    69
  • download

    6

Embed Size (px)

Transcript of Twisted Matrix

The Twisted DocumentationThe Twisted Development Team December 28, 2008

Contents1 Introduction 1.1 The Vision For Twisted . . . . . . . . . . . . . . . 1.2 High-Level Overview of Twisted . . . . . . . . . . 1.3 Asynchronous Programming with Twisted . . . . . 1.3.1 Introduction to concurrent programming . . 1.3.2 Deferreds . . . . . . . . . . . . . . . . . . 1.3.3 The Problem that Deferreds Solve . . . . . 1.3.4 Deferreds - a signal that data is yet to come 1.3.5 Conclusion . . . . . . . . . . . . . . . . . 1.4 Overview of Twisted Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 8 8 9 9 10 12 12 13 13 13 13 15 17 17 17 17 18 19 22 22 22 22 24 24 25 27 27 27 27 27 28 28 28 29 29 29 30 30 30 31 31

2 Tutorial 2.1 Writing Servers . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Overview . . . . . . . . . . . . . . . . . . . . . 2.1.2 Protocols . . . . . . . . . . . . . . . . . . . . . 2.1.3 Factories . . . . . . . . . . . . . . . . . . . . . 2.2 Writing Clients . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Overview . . . . . . . . . . . . . . . . . . . . . 2.2.2 Protocol . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Simple, single-use clients . . . . . . . . . . . . 2.2.4 ClientFactory . . . . . . . . . . . . . . . . . . . 2.2.5 A Higher-Level Example: ircLogBot . . . . . . 2.2.6 Further Reading . . . . . . . . . . . . . . . . . 2.3 Setting up the TwistedQuotes application . . . . . . . . 2.3.1 Goal . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Setting up the TwistedQuotes project directory . 2.4 Designing Twisted Applications . . . . . . . . . . . . . 2.4.1 Goals . . . . . . . . . . . . . . . . . . . . . . . 2.4.2 Example of a modular design: TwistedQuotes . . 2.5 Twisted from Scratch, or The Evolution of Finger . . . . 2.5.1 Introduction . . . . . . . . . . . . . . . . . . . . 2.5.2 Contents . . . . . . . . . . . . . . . . . . . . . 2.6 The Evolution of Finger: building a simple nger service 2.6.1 Introduction . . . . . . . . . . . . . . . . . . . . 2.6.2 Refuse Connections . . . . . . . . . . . . . . . 2.6.3 Do Nothing . . . . . . . . . . . . . . . . . . . . 2.6.4 Drop Connections . . . . . . . . . . . . . . . . 2.6.5 Read Username, Drop Connections . . . . . . . 2.6.6 Read Username, Output Error, Drop Connections 2.6.7 Output From Empty Factory . . . . . . . . . . . 2.6.8 Output from Non-empty Factory . . . . . . . . . 2.6.9 Use Deferreds . . . . . . . . . . . . . . . . . . . 2.6.10 Run nger Locally . . . . . . . . . . . . . . . 2.6.11 Read Status from the Web . . . . . . . . . . . . 2.6.12 Use Application . . . . . . . . . . . . . . . . . 1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

CONTENTS2.6.13 twistd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Evolution of Finger: adding features to the nger service . . . . . . . 2.7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7.2 Setting Message By Local Users . . . . . . . . . . . . . . . . . . 2.7.3 Use Services to Make Dependencies Sane . . . . . . . . . . . . . 2.7.4 Read Status File . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7.5 Announce on Web, Too . . . . . . . . . . . . . . . . . . . . . . . 2.7.6 Announce on IRC, Too . . . . . . . . . . . . . . . . . . . . . . . 2.7.7 Add XML-RPC Support . . . . . . . . . . . . . . . . . . . . . . The Evolution of Finger: cleaning up the nger code . . . . . . . . . . . 2.8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8.2 Write Readable Code . . . . . . . . . . . . . . . . . . . . . . . . The Evolution of Finger: moving to a component based architecture . . . 2.9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.9.2 Write Maintainable Code . . . . . . . . . . . . . . . . . . . . . . 2.9.3 Advantages of Latest Version . . . . . . . . . . . . . . . . . . . 2.9.4 Aspect-Oriented Programming . . . . . . . . . . . . . . . . . . . The Evolution of Finger: pluggable backends . . . . . . . . . . . . . . . 2.10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.10.2 Another Back-end . . . . . . . . . . . . . . . . . . . . . . . . . 2.10.3 Yet Another Back-end: Doing the Standard Thing . . . . . . . . . The Evolution of Finger: a web frontend . . . . . . . . . . . . . . . . . . 2.11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Evolution of Finger: Twisted client support using Perspective Broker 2.12.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.12.2 Use Perspective Broker . . . . . . . . . . . . . . . . . . . . . . . The Evolution of Finger: using a single factory for multiple protocols . . 2.13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.13.2 Support HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . The Evolution of Finger: a Twisted nger client . . . . . . . . . . . . . . 2.14.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.14.2 Finger Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Evolution of Finger: making a nger library . . . . . . . . . . . . . 2.15.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.15.2 Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.15.3 Easy Conguration . . . . . . . . . . . . . . . . . . . . . . . . . The Evolution of Finger: conguration and packaging of the nger service 2.16.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.16.2 Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.16.3 OS Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 32 32 32 32 33 34 35 37 38 40 40 40 43 43 43 47 52 52 52 52 57 63 63 68 68 68 73 73 73 79 79 79 81 81 81 82 84 84 84 90 91 91 91 91 92 92 92 92 93 94 94