Python-Tornado框架总结

Tornado框架

常用的包和模块

# 异步HTTP服务器
from tornado.ioloop import IOLoop
from tornado import gen,web

# 多进程服务器
from tornado.httpserver import HTTPServer

# 访问数据库
from tornado_mysql import pools

# 访问网路
from tornado.httpclient import AsyncHTTPClient

# 单元测试
from tornado.testing import gen_test, AsyncTestCase
import unittest

# TCPServer
from tornado import ioloop,gen,iostream
from tornado.tcpserver import TCPServer

# TCPClient
from tornado import ioloop,gen,iostream
from tornado.tcpclient import TCPClient

# socket模块(套接字)
import socket

socket模块

# 获取tcp/ip套接字
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 服务端套接字函数
sock.bind() #绑定(主机,端口号)到套接字
sock.listen() #开始TCP监听
sock.accept() #被动接受TCP客户的连接,(阻塞式)等待连接的到来

# 客户端套接字函数
sock.connect((hostname,port)) #主动初始化TCP服务器连接

# 公共用途的套接字函数
sock.recv(bufsize[,flag]) #接受套接字的数据。数据以字符串形式返回,bufsize指定最多可以接收的数量
sock.send() #发送TCP数据(send在待发送数据量大于己端缓存区剩余空间时,数据丢失,不会发完)
sock.close() #关闭套接字


# 面向文件的套接字方法
sock.fileno() #套接字的文件描述符

ioloop模块

loop = ioloop.IOLoop.current() #创建一个IO循环的对象
loop.start() #ioloop对象启动
ioloop.IOLoop.current().run_sync(func) #run_sync 可以自动开启 ioloop 并在函数执行结束之后关闭 ioloop,此种调用在执行一次性操作时非常有用,比如要对数据库进行一次性修改

tornado.ioloop.IOLoop 提供了三个接口可以用于网络编程

1.add_handler(fd, handler, events)

add_handler用于添加socket到主循环中, 接受三个参数: fd 是socket的文件描述符;handler 是处理此socket的callback函数 ;events 是此socket注册的事件。

2.update_handler(fd, events)

update_handler用于更新住循环中已存在的socket响应事件, 接受两个参数: fd 是socket对应的文件描述符;events 是注册的新事件。

3.remove_handler(fd)

remove_handler用于移除主循环中已存在的socket。

tornado.ioloop.IOLoop的4种响应事件

事件 描述
tornado.ioloop.IOLoop.NONE 无事件
tornado.ioloop.IOLoop.READ 读事件
tornado.ioloop.IOLoop.WRITE 写事件
tornado.ioloop.IOLoop.ERROR 发生错误的事件
------ 本文结束感谢您的阅读 ------
坚持原创技术分享,您的支持将鼓励我继续创作!