wsgi服务器
DRP原则:Don't repeat yourself
1、wsgi接口:全称 Web Server Gateway Interface (web服务器网关接口)
请求:request
响应:response
#author: wylkjj
#date:2019/6/6
from wsgiref.simple_server import make_server
def application(environ,start_response):
#通过environ封装成一个所有请求信息的对象
start_response('200 OK',[('Content-Type','text/html')])
return [b'<h1>Hellow,Web!</h1>']
#封装socket对象以及准备过程(socket,bind,listen)
httpd = make_server('',8080,application)
print('Serving HTTP on port 8000...')
#开始监听请求:
httpd.serve_forever()
页面跳转的流程
#author: wylkjj
#date:2019/6/8
from wsgiref.simple_server import make_server
def application(environ,start_response):
#ptint('environ',environ["PATH_INFO"])
start_response('200 OK', [('Content-Type', 'text/html')])
path=environ["PATH_INFO"]
if path=='/book':
return [b'<h1>hello book!</h1>']
elif path=='/web':
return [b'<h1>hello wed!</h1>']
else:
return ["<h1>404</h1>".encode("utf8")]
return [b'<h1>hello world!</h1>']
httpd=make_server('',8080,application)
print('Serving HTTP on port 8000...')
httpd.serve_forever()
最简版:
#author: wylkjj
#date:2019/6/8
from wsgiref.simple_server import make_server
def f1(request):
return [b'<h1>hello book!</h1>']
def f2(request):
return [b'<h1>hello wed!</h1>']
def routers():
urlpatterns=(
('/book',f1),
('/web',f2),
)
return urlpatterns
def application(environ,start_response):
#ptint('environ',environ["PATH_INFO"])
start_response('200 OK', [('Content-Type', 'text/html')])
path=environ["PATH_INFO"]
urlpatterns = routers()
func=None
for item in urlpatterns:
if item[0] == path:
func=item[1]
break
if func:
return func(environ)
else:
return ["<h1>404</h1>".encode("utf8")]
# if path=='/book':
# return f1(environ)
# elif path=='/web':
# return f2(environ)
# else:
# return ["<h1>404</h1>".encode("utf8")]
return [b'<h1>hello world!</h1>']
httpd=make_server('',8080,application)
print('Serving HTTP on port 8000...')
httpd.serve_forever()
2、动态显示时间:
.py:
#author: wylkjj
#date:2019/6/8
from wsgiref.simple_server import make_server
import time
def current_time(request):
# 模板
cur_time = time.ctime(time.time())
f = open("current_time.html", "rb")
data = f.read()
data = str(data, "utf8").replace("!cur_time!", str(cur_time))
return [data.encode("utf8")]
def routers():
urlpatterns=(
("/current_time",current_time),
)
return urlpatterns
def application(environ,start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
path=environ["PATH_INFO"]
urlpatterns = routers()
func=None
for item in urlpatterns:
if item[0] == path:
func=item[1]
break
if func:
return func(environ)
else:
return ["<h1>404</h1>".encode("utf8")]
return [b'<h1>hello world!</h1>']
httpd=make_server('',8080,application)
print('Serving HTTP on port 8000...')
httpd.serve_forever()
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>current_time: !cur_time! </h1>
</body>
</html>

wsgi服务器的更多相关文章

  1. werkeug的WSGI服务器解析

    werkeug的WSGI服务器解析 1.      WSGI 1.1.    wsgi与flask flask默认的wsgi引用自wekurg 声明app:FLASK对象 app.run() run_ ...

  2. WSGI服务器实践二--实践一个基本功能的WSGI服务器

    由于各种PYTHON框架都实现了WSGI接口,所以,通用性很广的. 在调试过程过,有一个字母拼错,搞了一个小时. 看来PYTHON自带的编辑器没有高亮,不爽. 在有提示的编辑器里一看就看了来啦..:) ...

  3. 标准库源码--wsgi服务器

    功能模块化带来可自由组装的便利: 使用python的mixin特性装配 class ThreadHTTPServer(ThreadingMixin, HTTPServer): pass 上面表示1个请 ...

  4. 自己写一个 wsgi 服务器运行 Django 、Tornado 等框架应用

    https://blog.csdn.net/heybob/article/details/52288006

  5. WSGI协议以及对服务器的影响

    下面的内容纯属个人学习心得,如果对于我的观点有疑问,敬请留言,我将虚心向大牛学习. WSGI的全称是WEB SERVICE GATEWAY INTERFACE.WSGI 不是服务器,不是API,也不是 ...

  6. 使用Python开发轻量级的Web框架以及基于WSGI的服务器来实现一个网站页面

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 目录 一丶项目说明 二丶数据准备 三丶使用网络TCP开发一个基于WSGI协议的Web服务器 四丶使用python3开发一个轻量级的 ...

  7. WSGI——python web 服务器网关接口

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826084.html 一:服务器.服务器软件.应用程序(后台) 我们常说“服务器”,实际上服务器是一个很宽 ...

  8. Django基础之wsgi

    Django 一 什么是web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演 ...

  9. Web服务精讲–搭个 Web 服务器(二)

    导读 曾几何时,你所选择的 Python Web 框架会限制你所可选择的 Web 服务器,反之亦然.如果某个框架及服务器设计用来协同工作的,那么一切正常. 在第一部分中,我提出了一个问题:“如何在你刚 ...

  10. WSGI

    [WSGI] WSGI:Web Server Gateway Interface. WSGI接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求.我们来看一个最简单的Web版本的 ...

随机推荐

  1. HTTP请求与响应格式解析

     HTTP是Web浏览器与Web服务器之间通信的标准协议,HTTP指明了客户端如何与服务器建立连接,如果从服务器请求数据,服务器如何响应请求,关闭连接.HTTP是使用TCP/IP协议进行传输数据的,也 ...

  2. clickhouse之安装与基本使用

    近期要做一个数据统计功能,公司选择了clickhouse作为数据库:下面记录一下该数据库的特性和使用教程. clickhouse是一个列式数据库,主要用于数据分析:从目前使用看来,特点如下: 列式存储 ...

  3. AI让照片跳舞,人人都能是舞王!Swan下载介绍

    最近,兵马俑.马斯克以及各地网友跳科目三和网红舞的视频陆续在社交媒体和朋友圈刷屏,这些大约10秒左右的视频都不是真人出镜,均由大模型生成,这种低门槛的跳舞方式引发了网友的广泛体验,掀起了一波斗舞狂潮「 ...

  4. dotnet core微服务框架Jimu ~ 基础网关

    网关提供外部访问内部微服务的统一入口,基于分布式和服务治理等功能特点,外部不能绕过网关调用内部微服务(框架本身提供外部可以直接访问内部微服务的功能,这里不作详细说明),外部通过 http 协议请求网关 ...

  5. 了解URLSearchParams对象

    URLSearchParams对象用于处理URL中查询字符串,即?之后的部分. 1.语法 其实例对象的用法和Set数据结构类似.实例对象本身是可遍历对象.但是不是遍历器. var paramsStri ...

  6. CVE-2023-32233 Linux 内核 UAF 漏洞分析与利用

    Linux 内核 nftable 模块在处理匿名 set 时存在 UAF. ‍ 漏洞分析 漏洞成因是 nf_tables_deactivate_set​ 在释放匿名 set 时没有将 set 的标记设 ...

  7. MeteoInfo-Java解析与绘图教程(六)

    MeteoInfo-Java解析与绘图教程(六) 这一节主要说的是我们取到自动站的数据,如何通过插值,转化成格点数据,并绘制图层 //从数据库查询cimiss数据 List<Map<Str ...

  8. 【Java高级编程】IO流学习笔记

    目录 IO流 File类 文件/文件夹基础操作 创建文件的完整步骤 IO流 - 节点流 读入文件一个字节(一个字节) [FileInputStream]字节数组的方式读取(读取全部内容) [FileI ...

  9. 转载 Netty tls验证

    https://blog.csdn.net/luo15242208310/article/details/108215019 目录Java ssl单向TLSServer端Client端双向TLSser ...

  10. Qt编写项目作品27-多线程文件传输

    一.功能特点 多线程收发文件,支持加密传输. 接收端支持监听端口接收文件和主动连接服务器接收文件两种方式. 按照 文件开始符+文件大小+文件内容+文件结束符 逐个分包接收. 可对接收的加密过的文件包进 ...