Python中WSGI基本原理如何理解,简单的应用怎么做
Admin 2022-07-05 群英技术资讯 530 次浏览
wsgiref简单示例
运行以下示例程序后,在浏览器中输入以http://127.0.0.1:9999/开头的随意一个url都可以看到返回结果。实例程序中所有url都会以同一个App进行处理,实际生产环境中不同的url肯定是需要映射到不同的App上的,但这部分本文不作讲解。
# wsgiref是Python自带的内置库,它用来开发者对wsgi进行测试用的,不可以用在生产环境中 from wsgiref.simple_server import make_server, demo_app # wsgi也是基于socket server编写 # 默认情况下会将所有url都传入demo_app进行处理,具体可参考demo_app源码 # app参数可以是任何可调用对象,但是内部处理需要参考demo_app源码,即environ处理、start_response调用、返回值类型 ws = make_server('127.0.0.1', 9999, demo_app) # 启动服务 ws.serve_forever()
demo_app源码
def demo_app(environ,start_response): from io import StringIO stdout = StringIO() print("Hello world!", file=stdout) print(file=stdout) # environ是一个字典,包含了所有请求信息 h = sorted(environ.items()) for k,v in h: print(k,'=',repr(v), file=stdout) # return之前需要调用start_response设置响应头信息 start_response("200 OK", [('Content-Type','text/plain; charset=utf-8')]) return [stdout.getvalue().encode("utf-8")] # 一个可迭代对象,元素为byte类型,元素内容依据start_response中指定的Content-Type来指定
demo_app类定义的两种方式
# 第一种方式:定义类的__init__和__iter__方法,前者用来接收和处理environ和start_response,后者生成一个可迭代对象 # make_server中app参数只需传入类名即可 class ApplicationClass: def __init__(self, environ, start_response): self.e = environ self.sr = start_response def __iter__(self): from io import StringIO stdout = StringIO() print("Hello world!", file=stdout) print(file=stdout) h = sorted(self.e.items()) for k, v in h: print(k, '=', repr(v), file=stdout) self.sr("200 OK", [('Content-Type', 'text/plain; charset=utf-8')]) yield from [stdout.getvalue().encode("utf-8")] # 第二种方式:定义__call__方法,接收和处理environ和start_response,并返回一个可迭代对象 # make_server中app参数需要传入类的实例 class ApplicationInstance: def __call__(self, environ, start_response): from io import StringIO stdout = StringIO() print("Hello world!", file=stdout) print(file=stdout) h = sorted(environ.items()) for k, v in h: print(k, '=', repr(v), file=stdout) start_response("200 OK", [('Content-Type', 'text/plain; charset=utf-8')]) return [stdout.getvalue().encode("utf-8")]
WSGI web服务器
WSGI应用程序
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学
Python编程语言允许在一个循环内嵌套一个循环。下文将通过几个例子来说明这一概念。
这篇文章主要为大家介绍了Python中获取协程返回值的四种方法的示例代码,文中的代码详细易懂,对我们学习Python有一定的帮助,需要的朋友可以了解一下
这篇文章主要给大家介绍了关于利用Python将彩色图像转为灰度图像的两种方法,以及python 批量将图片转为灰度图的方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
这篇文章主要介绍了pytorch实现简单全连接层的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008