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)相关推荐

  1. Python服务器开发一:python基础

    Python服务器开发一:python基础 Python(蟒蛇)是一种动态解释型的编程语言.Python可以在Windows.UNIX.MAC等多种操作系统上使用,也可以在Java..NET开发平台上 ...

  2. Python服务器开发三:Socket

    Python服务器开发三:Socket socket是操作系统中I/O的延续,它可以使进程和机器之间的通信成为可能.socket可以看成一个标准的文件描述符.不同的是文件需要用open()函数打开,而 ...

  3. python web开发 网络编程 HTTP协议、Web服务器、WSGI接口

    文章目录 1. HTTP协议 2. Web服务器 3. 静态服务器 创建 web_server.py 4. WSGI 接口 4.1 CGI 通用网关接口 4.2 WSGI 4.3 定义 WSGI 接口 ...

  4. 用python快速开发一个实用的socket服务器

    用python快速开发一个实用的socket服务器 - 吴尔平 - 博客园 用python快速开发一个实用的socket服务器 首先,要明白不是所有的socket服务都需要高性能.如果要求高性能,使用 ...

  5. 阿里云服务器搭建python web环境_《Python入门》Linux 下 Python Web开发环境搭建笔记-阿里云开发者社区...

    之前写过 Windows 7下Python Web开发环境搭建笔记,今天写一下在Linux系统下搭建Python Web的开发测试环境. 我使用的系统是:ubuntu 14.04 server,根据个 ...

  6. python安卓开发实例_python服务器与android客户端socket通信实例

    本文实例讲述了python服务器与android客户端socket通信的方法.分享给大家供大家参考.具体实现方法如下: 首先,服务器端使用python完成,下面为python代码: #server.p ...

  7. 万字干货 | Python后台开发的高并发场景优化解决方案

    嘉宾 | 黄思涵 来源 | AI科技大本营在线公开课 互联网发展到今天,规模变得越来越大,也对所有的后端服务提出了更高的要求.在平时的工作中,我们或多或少都遇到过服务器压力过大问题.针对该问题,本次公 ...

  8. 这可能是东半球最保姆级的后台服务器开发学习路线

    作者 | 编程指北 来源 | 编程指北(id :cs_dev) 前言 这一篇的主题是「Linux C/C++ 服务器/后台开发学习路线」. 这样的文章相信大家都见得不少了,写之前也非常忐忑,能不能和其 ...

  9. Python web 开发:部署一个3行代码的wsgi app

    通过前面的两篇: Python Web开发:从 wsgi 开始 Python Web开发:开发wsgi中间件 我们已经知道我们平时开发的 django.flask 等 python web 项目本质上 ...

最新文章

  1. MS SQL基础:注释符、运算符与通配符
  2. cordova sqlite
  3. Ubuntu 21.04终端中文乱码和无法输入中文
  4. 【ARM】异常产生指令
  5. RocketMQ消费幂等性处理
  6. 在 Windows 服务中托管 ASP.NET Core
  7. arm cpu 超频_树莓派 400 超频方法介绍
  8. why do we use process keys
  9. java编程 队列_5.1、顺序队列(java实现)
  10. shell之文本过滤(awk)(转)
  11. JMeter数据库操作详解
  12. Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()
  13. zebradesigner2教程_ZebraDesigner快速使用说明
  14. 嘉楠科技多位高管退出,知情人称管理层夺权内斗
  15. 实验|三层交换机配置实例
  16. Scheme语言 入门语法
  17. 诸葛新增快应用SDK,满足客户更多数据采集方案支持!
  18. 在3D空间中绘制四边形
  19. 如何选择GPS定位器
  20. unix操作系统可以用于服务器管理吗,UNIX操作系统使用必备(四)

热门文章

  1. 代码传奇 | 身价10亿的程序员 雷军当年也为他打工——WPS之父 求伯君
  2. Cisco IPCC概述
  3. 让家庭机器人成标配,我们还需要等多久?
  4. 你的电脑未正确启动,自动修复死循环
  5. 维基解密:CIA早就可以轻易入侵苹果手机和电脑
  6. 利用matplotlib为论文画图(一)
  7. [Matlab] 论文画图技巧:预测曲线图
  8. ibm oracle 应用程序 编排_甲骨文携手IBM认证Oracle Fusion应用软件
  9. A beginning Flags
  10. 误用rm -rf *文件修复及修改rm指令为mv