Python服务器开发(1)
Python的标准库里的服务器模块SocketServer可以很方便的开发简单的服务器程序
import SocketServer
class MyHandler(SocketServer.StreamRequestHandler):
def handle():
addr = self.request.getpeername()
print 'connection from:", addr
data = self.rfile.read(1024)
print 'data:', data
self.wfile.write('xxx')
server = SocketServer.ThreadingTCPServer((ip, host), MyHandler)
server.serve_forever()
对于UDP而言,StreamRequestHandler还可以用DatagramRequestHandler代替,ThreadingTCPServer可以用TCPServer, UDPServer代替
在 Python标准库里有如下定义:
class ThreadingTCPServer(ThreadingMixIn, TCPServer):
pass
StreamRequestHandler是BaseRequestHandler的一个子类,我们需要创建一个自己的handler类,继承自StreamRequestHandler,
并重载StreamRequestHandler.handle()方法。
StreamRequestHandler.handle()方法的调用顺序为:
StreamRequestHandler.setup()->StreamRequestHandler.handle()->StreamRequestHandler.finish(),setup和finish调用啥也不做,可以无视
该类中,self.client_address表示客户端地址,如果是StreamRequestHandler, self.request表示socket,如果是DatagramRequestHandler,
self.request是(socket, data)的tuple。同时self.rfile, self.wfile可以用来读写
在标准库里,BaseServer通过handle_request来处理请求(serve_forever就是不停调用handle_request)。handle_request()中包含了
get_request, verify_request, process_request, finish_request。其中finish_request会调用StreamRequestHandler的handle方法。
而process_request会继承自ThreadingMixIn或者ForkingMixIn,对每个request新建线程,然后由线程调用finish_request
BaseServer的其他属性和方法请参考Python Library Reference:
BaseServer.socket: listen的socket
BaseServer.shutdown(): stop serve_forever() loop
BaseServer.allow_reuse_address
BaseServer.request_queue_size
BaseServer.handle_error: 如果RequestHandler的handle方法抛出异常,由handle_error处理
Python服务器开发(1)相关推荐
- Python服务器开发一:python基础
Python服务器开发一:python基础 Python(蟒蛇)是一种动态解释型的编程语言.Python可以在Windows.UNIX.MAC等多种操作系统上使用,也可以在Java..NET开发平台上 ...
- Python服务器开发三:Socket
Python服务器开发三:Socket socket是操作系统中I/O的延续,它可以使进程和机器之间的通信成为可能.socket可以看成一个标准的文件描述符.不同的是文件需要用open()函数打开,而 ...
- python web开发 网络编程 HTTP协议、Web服务器、WSGI接口
文章目录 1. HTTP协议 2. Web服务器 3. 静态服务器 创建 web_server.py 4. WSGI 接口 4.1 CGI 通用网关接口 4.2 WSGI 4.3 定义 WSGI 接口 ...
- 用python快速开发一个实用的socket服务器
用python快速开发一个实用的socket服务器 - 吴尔平 - 博客园 用python快速开发一个实用的socket服务器 首先,要明白不是所有的socket服务都需要高性能.如果要求高性能,使用 ...
- 阿里云服务器搭建python web环境_《Python入门》Linux 下 Python Web开发环境搭建笔记-阿里云开发者社区...
之前写过 Windows 7下Python Web开发环境搭建笔记,今天写一下在Linux系统下搭建Python Web的开发测试环境. 我使用的系统是:ubuntu 14.04 server,根据个 ...
- python安卓开发实例_python服务器与android客户端socket通信实例
本文实例讲述了python服务器与android客户端socket通信的方法.分享给大家供大家参考.具体实现方法如下: 首先,服务器端使用python完成,下面为python代码: #server.p ...
- 万字干货 | Python后台开发的高并发场景优化解决方案
嘉宾 | 黄思涵 来源 | AI科技大本营在线公开课 互联网发展到今天,规模变得越来越大,也对所有的后端服务提出了更高的要求.在平时的工作中,我们或多或少都遇到过服务器压力过大问题.针对该问题,本次公 ...
- 这可能是东半球最保姆级的后台服务器开发学习路线
作者 | 编程指北 来源 | 编程指北(id :cs_dev) 前言 这一篇的主题是「Linux C/C++ 服务器/后台开发学习路线」. 这样的文章相信大家都见得不少了,写之前也非常忐忑,能不能和其 ...
- Python web 开发:部署一个3行代码的wsgi app
通过前面的两篇: Python Web开发:从 wsgi 开始 Python Web开发:开发wsgi中间件 我们已经知道我们平时开发的 django.flask 等 python web 项目本质上 ...
最新文章
- MS SQL基础:注释符、运算符与通配符
- cordova sqlite
- Ubuntu 21.04终端中文乱码和无法输入中文
- 【ARM】异常产生指令
- RocketMQ消费幂等性处理
- 在 Windows 服务中托管 ASP.NET Core
- arm cpu 超频_树莓派 400 超频方法介绍
- why do we use process keys
- java编程 队列_5.1、顺序队列(java实现)
- shell之文本过滤(awk)(转)
- JMeter数据库操作详解
- Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()
- zebradesigner2教程_ZebraDesigner快速使用说明
- 嘉楠科技多位高管退出,知情人称管理层夺权内斗
- 实验|三层交换机配置实例
- Scheme语言 入门语法
- 诸葛新增快应用SDK,满足客户更多数据采集方案支持!
- 在3D空间中绘制四边形
- 如何选择GPS定位器
- unix操作系统可以用于服务器管理吗,UNIX操作系统使用必备(四)