前面一直使用HTTPServer对web请求进行处理,今天突然想能不能改下,用python3提供的wsgiref进行处理,原来的程序:
from wsgiref.simple_server import make_server
def hello_world_app(env,start_response):
start_response("200 OK",[("Content-type","text/plain;charset=utf-8")])
return ["Hello World!!"]
if __name__ == "__main__":
httpd=make_server('',8080,hello_world_app)
httpd.handle_request()
问题并不在这个程序,异常报的是在write的时候,于是,要改的就是write,改哪里呢?
就改ServerHandler
这个类在wsgiref包里的simple_server.py模块中(Lib/wsgiref/simple_server.py)
原来的ServerHandler是:
class ServerHandler(SimpleHandler):
server_software = software_version
def close(self):
try:
self.request_handler.log_request(
self.status.split(' ',1)[0], self.bytes_sent
)
finally:
SimpleHandler.close(self)
重写_write方法即可:
class ServerHandler(SimpleHandler):
server_software = software_version
def close(self):
try:
self.request_handler.log_request(
self.status.split(' ',1)[0], self.bytes_sent
)
self.buf_data.seek(0)
shutil.copyfileobj(self.buf_data,self.stdout)
finally:
SimpleHandler.close(self)
def _write(self,data):
if not hasattr(self,"buf_data"):
self.buf_data=io.BytesIO()
if type(data) is str:
data=data.encode("UTF-8")
self.buf_data.write(data)
大功告成。
测试 http://localhost:8080,Hello World出来了!
为了方便调试,这里的编码直接写UTF-8了。各位根据自己的需要配置。。
如果需要使用多线程处理,可以用上一篇文章提到的ThreadingMixIn即可。
分享到:
- 2009-03-31 16:04
- 浏览 1285
- 评论(0)
- 论坛回复 / 浏览 (0 / 1764)
- 查看更多
相关推荐
Flask是一个轻量级的Web服务程序,它基于Werkzeug WSGI工具包和Jinja2模板引擎构建,因其简洁易用的特性在Python Web开发中广受欢迎。这个库将financeager与Flask框架集成,旨在提供一套高效、灵活的金融数据处理和...
在实际应用中,`simple-api-management-wsgi-0.1.1`可以与其他WSGI兼容的Web服务器(如uWSGI、Gunicorn等)结合使用,通过这些服务器将API接口暴露给网络。同时,它也可以与其他Python库(如Flask、Django等Web框架...
16-WSGI、mini_frame(web框架)(python和linux高级编程阶段 代码和截图)16-WSGI、mini_frame(web框架)(python和linux高级编程阶段 代码和截图)16-WSGI、mini_frame(web框架)(python和linux高级编程阶段 ...
资源分类:Python库 所属语言:Python 资源全名:necrophos-wsgi-0.0.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
本文将深入探讨Python中的WSGI(Web Server Gateway Interface)服务器及其在WSGIserver-1.0-py2.py3-none-any.whl这个特定库中的应用。WSGI是Python Web应用程序与Web服务器之间的一个接口标准,它定义了如何处理...
Python 2.7 和 mod_wsgi-win32-ap22py27-3.3.so:在Web开发领域,Python是一种流行的脚本语言,而Apache是广泛应用的HTTP服务器。当需要在Apache服务器上运行Python应用程序时,mod_wsgi模块扮演着关键角色。`mod_...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
在Python web开发中,WSGI(Web Server Gateway Interface)是一种标准接口,用于web服务器与web应用之间的通信。这个接口定义了一种规范,使得不同的服务器和应用程序可以协同工作,提高了代码的可移植性和灵活性。...
官方离线安装包,亲测可用
安装完成后,可以在Python代码中导入并根据文档或示例配置和启动Web服务器。 总之,rc-webserver是一个专为Python设计的Web服务器库,它提供了构建Web服务所需的基本功能,并且可能具有高度可定制性和扩展性,以...
资源分类:Python库 所属语言:Python 资源全名:buildbot-wsgi-dashboards-1.5.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:necrophos-wsgi-0.0.4.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
官方离线安装包,亲测可用
5. **中间件**:中间件是WSGI框架中一种强大的功能,它们可以在请求到达应用和应用发送响应之间插入额外的处理逻辑。这可以用于日志记录、身份验证、性能监控等多种用途。 6. **轻量级**:Python-...
- **daemon模式**:更推荐的方式,`mod_wsgi`会在单独的进程组(daemon进程)中运行Python应用,每个进程可以处理多个请求,提高了并发能力。这种模式更适合大型、高流量的应用。 **3. mod_wsgi的安装与配置** - ...
mod_wsgi-3.5-for-windows32/64-apache2.2/2.4-python2.6-3.4各版本组合都有。总有一款适合你。 详见列表: mod_wsgi-3.5.ap22.win32-py2.6.zip mod_wsgi-3.5.ap22.win32-py2.7.zip mod_wsgi-3.5.ap22.win32-py3.2....
在本篇【Python一日一练102----创建简易博客(下)】的教程中,我们将深入探讨如何使用Python编程语言构建一个简单的博客系统。这个教程可能是基于Django框架进行的,因为Django是Python中广泛用于Web开发的高级框架...
mod_wsgi-3.2-3.el6.x86_64.rpm mysql-5.1.73-3.el6_5.x86_64.rpm mysql-libs-5.1.73-3.el6_5.x86_64.rpm MySQL-python-1.2.3-0.3.c1.1.el6.x86_64.rpm mysql-server-5.1.73-3.el6_5.x86_64.rpm nc-1.84-22.el6.x86_...
6. **Gunicorn 或 uWSGI**:在 Python 应用和 Nginx 之间,通常会有一个 WSGI 服务器,如 Gunicorn 或 uWSGI,它们接收 Nginx 转发的请求并处理 Python 应用的业务逻辑。 7. **虚拟环境**:为了保持项目依赖的隔离...