深入了解一下PYTHON中关于SOCKETSERVER的模块-C
同时处理多个客户端请求,并且为不同的CLIENT开不同的线程处理。
这个东东,就显然实用性稍强了一些。(FORK和THREAD方式均可,但各有应用)
#!/usr/bin/env python
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
from SocketServer import ThreadingMixIn
import time,threading
starttime = time.time()
class RequestHandler(BaseHTTPRequestHandler):
"""Definintion of the request hadnler."""
def _writeheaders(self, doc):
"""Write the HTTP headers for the document. If there is no
documnet, send a 404 error code;"""
if doc is None:
self.send_response(404)
else:
self.send_response(200)
#Always server up HTML for now.
self.send_header('Content-type', 'text/html')
self.end_headers()
def _getdoc(self, filename):
"""Handle a request for a document """
global starttime
if filename == '/':
return """
<HTML><HEAD><TITLE>sample python page</TITLE></HEAD>
<BODY> THIS IS A SAMPLE PAGE.
</BODY></HTML>
"""
elif filename == '/stats.html':
return """
<HTML><HEAD><TITLE>Status</TITLE></HEAD>
<BODY> This server has veen running for %d seconds.
</BODY></HTML>
""" % int(time.time() - starttime)
else:
return None
def do_HEAD(self):
"""Handle a request for headers only"""
doc = self._getdoc(self.path)
self._writeheaders(doc)
def do_GET(self):
"""Handle a request for headers and body"""
print "Handling with thread", threading.currentThread().getName()
doc = self._getdoc(self.path)
self._writeheaders(doc)
if doc is None:
self.wfile.write("""
<HTML><HEAD><TITLE>Not found</TITLE></HEAD>
<BODY> The requested document '%s' was not found.
</BODY></HTML>""" % self.path)
else:
self.wfile.write(doc)
class ThreadingHTTPServer(ThreadingMixIn, HTTPServer):
pass
serveraddr = ('',8765)
srvr = ThreadingHTTPServer(serveraddr, RequestHandler)
srvr.serve_forever()

深入了解一下PYTHON中关于SOCKETSERVER的模块-C的更多相关文章
- 深入了解一下PYTHON中关于SOCKETSERVER的模块-D
在LINUX上以FORK的方式使用SIMPLEHTTPSERVER. 记得哟,THREADING能在WIN和LINUX上实现,但FORK,不支持WIN的. 除了SIMPLE之外,还有CGI,就不示例啦 ...
- 深入了解一下PYTHON中关于SOCKETSERVER的模块-B
请求多个文件的原型. 这个是最草的情况,就是硬编码到内存中的字符串, 真实的应用还是会转到其它端口处理,或是读到硬盘上的文件吧. #!/usr/bin/env python from BaseHTTP ...
- 深入了解一下PYTHON中关于SOCKETSERVER的模块-A
有了这块知识,应该对各类WEB框架有更好的理解吧..FLASK,DJANGO,WEBPY.... #!/usr/bin/env python from BaseHTTPServer import HT ...
- Python中os和shutil模块实用方法集…
Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...
- Python中os和shutil模块实用方法集锦
Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...
- python中根据字符串导入模块module
python中根据字符串导入模块module 需要导入importlib,使用其中的import_module方法 import importlib modname = 'datetime' date ...
- python中的第三方日志模块logging
基本上每个系统都有自己的日志系统,可以使自己写的,也可以是第三方的.下面来简单介绍一下python中第三方的日志模块,入手还是比较简单的,但是也很容易给自己埋雷. 下面是我参考的资料链接 入手demo ...
- Python中xlrd和xlwt模块使用方法 (python对excel文件的操作)
本文主要介绍可操作excel文件的xlrd.xlwt模块.其中xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入. 安装xlrd和xlwt模块 xlrd和xlwt模块不是 ...
- python中time、datetime模块的使用
目录 python中time.datetime模块的使用 1.前言 2.time模块 1.时间格式转换图 2.常用方法 3.datetime模块 python中time.datetime模块的使用 1 ...
随机推荐
- careercup-数组和字符串1.8
1.8 假定有一个方法isSubstring,可检查一个单词是否为其他字符串的子串.给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次isSubstring.旋转字符串: ...
- NDK开发之数组操作
JNI把Java数组当作引用类型来处理,JNI提供了必要的函数来访问和处理Java数组. 下面一个一个来看. 1.创建数组 我们可以使用NewArray函数在原生代码中创建数组实例,其中可以是Int. ...
- Android(java)学习笔记186:对ListView等列表组件中数据进行增、删、改操作
1.ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V: view (显示的视图) C: controller 控制器 入门案例: acit ...
- JavaScript 应用开发 #1:理解模型与集合
在 < Backbone 应用实例 > 这个课程里面,我们会一起用 JavaScript 做一个小应用,它可以管理任务列表,应用可以创建新任务,编辑还有删除任务等等.这个实例非常好的演示了 ...
- springmvc使用@ResponseBody返回json乱码解决方法
1.springmvc 3.2以上的版本解决乱码的方法: 第一步:在配置中加入: <mvc:annotation-driven> <mvc:message-converters re ...
- js--小结①
- dumpbin.exe
有时候我们想查看一个exe引用了哪些动态库,或者我们想看某个动态库包含哪些接口函数,这个时候可以使用dumpbin.exe工具: 1.输入Dumpbin -imports calldll.exe查看它 ...
- 关于C++和C#类型比较的相关内容
转载:http://www.csharpwin.com/csharpspace/6825r9922.shtml C#类型比较 类别 类名 说明 Visual Basic 数据类型 C# 数据类型 ...
- Tran 与 Goto try catch raiserror等浅显应用
---- Tran 事务 以及 Goto 的浅显应用 IF OBJECT_ID('tempdb..#tmptab','U') IS NOT NULL DROP TABLE #tmptab GO CRE ...
- oracle 消除块竞争(hot blocks)
上篇日志提到了,那么高的负载,是存在数据块读竞争,下面介绍几个方法来消除块竟争 查找块竟争 SELECT p1 "file#", p2 "block#", p3 ...