Twsited异步网络框架

Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如:网络协议、线程、数据库管理、网络操作、电子邮件等。

Twisted介绍:http://blog.csdn.net/hanhuili/article/details/9389433

事件驱动

简而言之,事件驱动分为二个部分:第一,注册事件;第二,触发事件。

自定义事件驱动框架,命名为:“弑君者”:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

# event_drive.py

event_list = []

def run():
    for event in event_list:
        obj = event()
        obj.execute()

class BaseHandler(object):
    """
    用户必须继承该类,从而规范所有类的方法(类似于接口的功能)
    """
    def execute(self):  #必须重写此方法,不写就报错
        raise Exception(‘you must overwrite execute‘)

最牛逼的事件驱动框架

程序员使用“弑君者框架”:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from source import event_drive

class MyHandler(event_drive.BaseHandler):

    def execute(self):
        print ‘event-drive execute MyHandler‘

event_drive.event_list.append(MyHandler)
event_drive.run()

Protocols
Protocols描述了如何以异步的方式处理网络中的事件。HTTP、DNS以及IMAP是应用层协议中的例子。Protocols实现了IProtocol接口,它包含如下的方法:

makeConnection 在transport对象和服务器之间建立一条连接
connectionMade 连接建立起来后调用
dataReceived 接收数据时调用
connectionLost 关闭连接时调用

Transports
Transports代表网络中两个通信结点之间的连接。Transports负责描述连接的细节,比如连接是面向流式的还是面向数据报的,流控以及可靠性。TCP、UDP和Unix套接字可作为transports的例子。它们被设计为“满足最小功能单元,同时具有最大程度的可复用性”,而且从协议实现中分离出来,这让许多协议可以采用相同类型的传输。Transports实现了ITransports接口,它包含如下的方法:

write 以非阻塞的方式按顺序依次将数据写到物理连接上
writeSequence 将一个字符串列表写到物理连接上
loseConnection 将所有挂起的数据写入,然后关闭连接
getPeer 取得连接中对端的地址信息
getHost 取得连接中本端的地址信息
将transports从协议中分离出来也使得对这两个层次的测试变得更加简单。可以通过简单地写入一个字符串来模拟传输,用这种方式来检查。

时间: 2024-11-03 21:46:39

Twsited异步网络框架的相关文章

理解Twsited异步网络框架

事件驱动 简而言之,事件驱动分为二个部分:第一,注册事件:第二,触发事件.自定义事件驱动框架,命名为:“弑君者”: 事件服务器端: 1 __author__ = 'lizheng' 2 # !/usr/bin/env python 3 #-*- coding:utf-8 -*- 4 event_list = [] 5 6 def run(): 7 for event in event_list: 8 obj = event() 9 obj.execute() 10 11 12 class Bas

python2.0_s12_day10_Twsited异步网络框架

Twsited异步网络框架 Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如:网络协议.线程.数据库管理.网络操作.电子邮件等. Package application Configuration objects for Twisted Applications Package conch Twisted Conch:The Twisted Shell.Terminal emulation,SSHv2 and telnet Module copyright Copyright i

基于redis AE的异步网络框架

最近一直在研究redis的源码,redis的高效率令人佩服. 在我们的linux机器上,cpu型号为, Intel(R) Pentium(R) CPU G630 @ 2.70GHz Intel(R) Pentium(R) CPU G630 @ 2.70GHz 上 set,get 都能达到每秒钟15W的请求处理量,真是佩服这代码的效率. 前几篇文章,主要是介绍了基本的代码,比如字符串处理,链表处理,hash等.这篇文章介绍网络的核心,基于事件反映的异步网络框架. 异步网络处理,是基于epoll的.

Voovan 是一个高性能异步网络框架和 HTTP(Java)

Voovan 是一个高性能异步网络框架和 HTTP 服务器框架,同时支持 HTTP 客户端抓取.动态编译支持.数据库访问封装以及 DateTime.String.Log.反射.对象工具.流操作.文件操作.异步双向通道等功能.旨在提供可靠.方便.可单元测试的代码.它是一个无任何依赖的独立工具包,希望能够方便广大开发者快速的实现应用. 作者:@愚民日记 地址:http://git.oschina.net/helyho/Voovan http://www.oschina.net/news/80909/

uvloop —— 超级快的 Python 异步网络框架

简短介绍 asyncio是遵循Python标准库的一个异步 I/O框架.在这篇文章里,我将介绍 uvloop: 可以完整替代asyncio事件循环.uvloop是用Cython写的,基于 libuv. uvloop 使得 asyncio 更快. 实际上,比nodejs,gevent,以及其他任何Python异步框架至少快两倍 .uvloop asyncio 基于性能的测试接近于Go程序. asyncio 和 uvloop asyncio 模块, 是在 PEP 3156引入的, 是一个集合,包含网

基于redis AE异步网络架构

最近的研究已redis源代码,redis高效率是令人钦佩. 在我们的linux那个机器,cpu型号, Intel(R) Pentium(R) CPU G630 @ 2.70GHz Intel(R) Pentium(R) CPU G630 @ 2.70GHz 上 set,get 都能达到每秒钟15W的请求处理量,真是佩服这代码的效率. 前几篇文章.主要是介绍了主要的代码.比方字符串处理,链表处理.hash等. 这篇文章介绍网络的核心,基于事件反映的异步网络框架. 异步网络处理.是基于epoll的.

系统学习消息队列分享(十) 如何实现高性能的异步网络传输?

异步与同步模型最大的区别是,同步模型会阻塞线程等待资源,而异步模型不会阻塞线程,它是等资源准备好后,再通知业务代码来完成后续的资源处理逻 辑.这种异步设计的方法,可以很好地解决IO等待的问题. 我们开发的绝大多数业务系统,它都是IO密集型系统.跟IO密集型系统相对的另一种系统叫计算密集型系 统.通过这两种系统的名字,估计你也能大概猜出来IO密集型系统是什么意思. IO密集型系统大部分时间都在执行IO操作,这个IO操作主要包括网络IO和磁盘IO,以及与计算机连接的一 些外围设备的访问.与之相对的计

异步网络加载开源框架AsyncHttpClient使用

AsyncHttpClient是异步的,但是有时候我们需要得到请求的结果集来返回给某个函数,由于是异步的,所以不能够直接return会去,所以可以定义一个interface来给调用AsyncHttpClient方法的一个回调来获取结果集,代码如下:定义回调接口: 点击(此处)折叠或打开 private static Callback mCallback; public interface Callback{ abstract void rankingsResultData(JSONArray r

Github 上Top1的Android 异步网络请求框架

今天给大家分享一个github上Top1的Android异步网络请求框架的使用方法,我给大家分享一个它的基本用法. 先来一个简单的get请求 AsyncHttpClient client = new AsyncHttpClient(); client.get("http://www.google.com", new AsyncHttpResponseHandler() { @Override public void onStart() { // called before reques