python twisted是什么_Python Twisted介绍

Twisted

是用

Python

实现的基于事件驱动的网络引擎框架。

Twisted

诞生于

2000

年初,

在当时的网络游戏开发者看来,

无论他们使用哪种语言,

手中都鲜有兼顾扩展性及跨平台的

网络库。

Twisted

的作者试图在当时的环境下开发游戏,这一步走的非常艰难,他们迫切需

要一个可扩展性高、基于事件驱动、跨平台的网络开发框架,为此他们决定自己实现一个,

并从那些之前的游戏和网络应用程序的开发者中学习,汲取他们的经验教训。

Twisted

支持许多常见的传输及应用层协议,

包括

TCP

UDP

SSL/TLS

HTTP

IMAP

SSH

IRC

以及

FTP

。就像

Python

一样,

Twisted

也具有

内置电池

(

batteries-included

)

的特点。

Twisted

对于其支持的所有协议都带有客户端和服务器实现,同时附带有基于命令

行的工具,使得配置和部署产品级的

Twisted

应用变得非常方便。

21.1

为什么需要

Twisted

2000

年时,

Twisted

的作者

Glyph

正在开发一个名为

Twisted Reality

的基于文本方式

的多人在线游戏。这个游戏采用

Java

开发,里面尽是一堆线程

每个连接就有

3

个线程处

理。

处理输入的线程会在读操作上阻塞,

处理输出的线程将在一些写操作上阻塞,

还有一个

逻辑

线程将在等待定时器超时或者事件入队列时休眠。随着玩家们在虚拟世界中移动并交

互时,

线程出现死锁,

缓存被污染,

程序中的加锁逻辑几乎从来就没对过

——

采用多线程使

得整个软件变得复杂、漏洞百出而且极难扩展。

为了寻求其他的解决方案,

作者发现了

Python

特别是

Python

中用于对流式对象比如

socket

pipe

进行多路

I/O

复用的

select

模块

(

UNIX

规范第

3

(

SUSv3

)

描述了

select

)

那时,

Java

并没有提供操作系统的

select

接口或者任何其他的异步

I/O API

(

针对非阻塞式

I/O

的包

java.nio

已经在

J2SE 1.4

中加入了,

2002

年发布)。通过用

Python

中的

select

模块快速搭建起游戏的原型,这迅速降低了程序的复杂度,并且比多线程版本要更加可靠。

Glyph

迅速转向了

Python

select

以及基于事件驱动的编程。他使用

Python

select

模块为游戏编写了客户端和服务器。

但他想要的还不止于此。

从根本上说,

他希望能将网络

行为转变为对游戏中的对象的方法调用。

如果你能在游戏中收取邮件会怎样,

就像

Nethack

mailer

这种守护进程一样?如果游戏中的每位玩家都拥有一个主页呢?

Glyph

发现他需要

优秀的

IMAP

以及

HTTP

客户端和服务器的

Python

实现,而这些都要采用

select

他首先转向了

Medusa

这是一个在

90

年代中期开发的平台,

在这里可以采用

Python

中的

asyncore

模块来编写网络服务。

asyncore

是一个异步化处理

socket

的模块,在操作

系统的

select API

之上构建了一个调度器和回调接口。

这对于

Glyph

来说是个激动人心的发现,但

Medusa

有两个缺点:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值