我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python Twisted

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python Twisted

Twsited异步网络框架

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

事件驱动

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

例:程序一

#!/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从协议中分离出来也使得对这两个层次的测试变得更加简单。可以通过简单地写入一个字符串来模拟传输,用这种方式来检查。

例:EchoServer

from twisted.internet import protocol
from twisted.internet import reactor

class Echo(protocol.Protocol):
   def dataReceived(self, data):   # 只要twisted已收到数据就会把数据返回
       self.transport.write(data)

def main():
   factory = protocol.ServerFactory()
   factory.protocol = Echo

   reactor.listenTCP(1234,factory)
   reactor.run()

if __name__ == '__main__':
   main()

EchoClient

from twisted.internet import reactor, protocol

class EchoClient(protocol.Protocol):
   """Once connected, send a message, then print the result."""

   def connectionMade(self):     # 只要建立连接成功就会执行此方法
       self.transport.write("hello alex!")

   def dataReceived(self, data):  # 只要收到数据就会调用此方法
       "As soon as any data is received, write it back."
       print("Server said:", data)
       self.transport.loseConnection()  # 如果数据未传完则等数据传输完毕后再调用此方法connectionLost

   def connectionLost(self, reason):
       print("connection lost")

class EchoFactory(protocol.ClientFactory):
   protocol = EchoClient

   def clientConnectionFailed(self, connector, reason):   # 如果连接不上就会调用此方法
       print("Connection failed - goodbye!")
       reactor.stop()       # 连接失败则关闭

   def clientConnectionLost(self, connector, reason):   # 如果连接过程中断开则执行此方法
       print("Connection lost - goodbye!")
       reactor.stop()     # 连接中断关闭


# this connects the protocol to a server running on port 8000
def main():
   f = EchoFactory()
   reactor.connectTCP("localhost", 1234, f)
   reactor.run()

# this only runs if the module was *not* imported
if __name__ == '__main__':
   main()

运行服务器端脚本将启动一个TCP服务器,监听端口1234上的连接。服务器采用的是Echo协议,数据经TCP transport对象写出。运行客户端脚本将对服务器发起一个TCP连接,回显服务器端的回应然后终止连接并停止reactor事件循环。这里的Factory用来对连接的双方生成protocol对象实例。两端的通信是异步的,connectTCP负责注册回调函数到reactor事件循环中,当socket上有数据可读时通知回调处理。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python Twisted

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python Twisted

Twsited异步网络框架Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如:网络协议、线程、数据库管理、网络操作、电子邮件等。事件驱动简而言之,事件驱动分为二个部分:第一,注册事件;第二,触发事件。例:程序一#!/usr/b
2023-01-31

python——twisted

Twisted is an event-driven networking engine in Python. It was born in theearly 2000s, when the writers of networked gam
2023-01-31

Python Twisted介绍

原文链接:http://www.aosabook.org/en/twisted.html翻译连接:http://blog.csdn.net/hanhuili/article/details/9389433#t7作者:Jessica McKe
2023-01-31

python twisted中文教程

先收藏,哇哈哈python twisted教程 一,异步编程http://cc.ecjtu.net/posts/python-twistedpython twisted教程 二:缓慢的诗http://cc.ecjtu.net/posts/p
2023-01-31

python 初次使用twisted

以下程序均来自《Python.UNIX和Linux系统管理指南》用twisted实现检测tcp端口twisted_check_tcp_port.py#!/usr/bin/env pythonfrom twisted.internet imp
2023-01-31

3..Twisted学习

写这个主要是为了自己理解Twisted的文档建立一个finger服务你不需要调用Twisted,Twisted会自己运行。reactor是Twisted的主循环,想python的其他主循环一样。每个Twisted只有一个reactor。一旦
2023-01-30

剖析Python的Twisted框架的核心特性

一. reactor twisted的核心是reactor,而提到reactor不可避免的是同步/异步,阻塞/非阻塞,在Dave的第一章概念性介绍中,对同步/异步的界限有点模糊,关于同步/异步,阻塞/非阻塞可参见知乎讨论。而关于proact
2022-06-04

python 编程之twisted详解及简单实例

python 编程之twisted详解 前言:我不擅长写socket代码。一是用c写起来比较麻烦,二是自己平时也没有这方面的需求。等到自己真正想了解的时候,才发现自己在这方面确实有需要改进的地方。最近由于项目的原因需要写一些Python代码
2022-06-04

如何在Ubuntu上安装Twisted

这篇文章主要介绍“如何在Ubuntu上安装Twisted”,在日常操作中,相信很多人在如何在Ubuntu上安装Twisted问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何在Ubuntu上安装Twisted
2023-06-13

Python 基于Twisted框架的文件夹网络传输源码

由于文件夹可能有多层目录,因此需要对其进行递归遍历。 本文采取了简单的协议定制,定义了五条命令,指令Head如下: Sync:标识开始同步文件夹 End:标识结束同步 File:标识传输的文件名(相对路径) Folder:标志文件夹(相对路
2022-06-04

实例解析Python的Twisted框架中Deferred对象的用法

Deferred对象结构 Deferred由一系列成对的回调链组成,每一对都包含一个用于处理成功的回调(callbacks)和一个用于处理错误的回调(errbacks)。初始状态下,deffereds将由两个空回调链组成。在向其中添加回调时
2022-06-04

第一部分:Twisted理论基础

前言:最近有人在Twisted邮件列表中提出诸如”为任务紧急的人提供一份Twisted介绍”的的需求。值得提前透露的是,这个序列并不会如他们所愿.尤其是介绍Twisted框架和基于Python 的异步编程而言,可能短时间无法讲清楚。因此,如
2023-01-30

Netty、MINA、Twisted中SSL/TLS的示例分析

这篇文章主要介绍了Netty、MINA、Twisted中SSL/TLS的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 相关术语在学习SSL/TLS协议之前,首先
2023-06-04

详解Python的Twisted框架中reactor事件管理器的用法

铺垫 在大量的实践中,似乎我们总是通过类似的方式来使用异步编程:监听事件事件发生执行对应的回调函数回调完成(可能产生新的事件添加进监听队列)回到1,监听事件因此我们将这样的异步模式称为Reactor模式,例如在iOS开发中的Run Loop
2022-06-04

Python的Twisted框架中使用Deferred对象来管理回调函数

首先抛出我们在讨论使用回调编程时的一些观点:激活errback是非常重要的。由于errback的功能与except块相同,因此用户需要确保它们的存在。他们并不是可选项,而是必选项。不在错误的时间点激活回调与在正确的时间点激活回调同等重要。典
2022-06-04

使用异步的twisted框架写入数据

1.twisted框架介绍Twisted是用Python实现的基于事件驱动的网络引擎框架;Twisted支持许多常见的传输及应用层协议,包括TCP、UDP、SSL/TLS、HTTP、IMAP、SSH、IRC以及FTP。就像Python一样,
2023-06-02

使用Python的Twisted框架编写非阻塞程序的代码示例

先来看一段代码:# ~*~ Twisted - A Python tale ~*~from time import sleep# Hello, I'm a developer and I mainly setup Wordpress. de
2022-06-04

使用Python的Twisted框架构建非阻塞下载程序的实例教程

第一个twisted支持的诗歌服务器 尽管Twisted大多数情况下用来写服务器代码,但为了一开始尽量从简单处着手,我们首先从简单的客户端讲起。 让我们来试试使用Twisted的客户端。源码在twisted-client-1/get-poe
2022-06-04

Netty、MINA、Twisted一起学系列05:整合protobuf

文章已获得作者授权,原文地址:xxgblog.com/2014/08/27/mina-netty-twisted-5protobuf 是谷歌的 Protocol Buffers 的简称,用于结构化数据和字节码之间互相转换(序列化、反序列化)
2023-06-03

Python的Twisted框架上手前所必须了解的异步编程思想

前言 最近有人在Twisted邮件列表中提出诸如"为任务紧急的人提供一份Twisted介绍"的需求。值得提前透露的是,这个系列并不会如他们所愿。尤其是介绍Twisted框架和基于Python 的异步编程而言,可能短时间无法讲清楚。因此,如果
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录