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. rustlings v6.0 运行时出现 “ You are trying to run Rustlings using the old method before version 6”

    背景 在之前学习 rust 时,使用过一段时间 rustlings 感觉还不错,但是之前的学习只把 rustlings 的题目刷了一半,然后想再从头到尾刷一遍 rustlings 的题目. 在 rus ...

  2. 使用 Antlr 处理文本

    高 尚 (gaoshang1999@163.com), 软件工程师, 中国农业银行软件开发中心 简介: Antlr 是一个基于 Java 开发的功能强大的语言识别工具,其主要功能原本是用于识别编程语言 ...

  3. 看不懂来打我,Vue3的watch是如何实现监听的?

    前言 watch这个API大家都很熟悉,今天这篇文章欧阳来带你搞清楚Vue3的watch是如何实现对响应式数据进行监听的.注:本文使用的Vue版本为3.5.13. 关注公众号:[前端欧阳],给自己一个 ...

  4. Clickhouse之数据删除方式

    什么是TTL? TTL的意思是Time To Live表示数据的存活时间.由于数据的价值会根据保存的时间成反比,出于存储成本的考虑通常只会保留近一年的数据.而在MergeTree (合并树)引擎中,可 ...

  5. Element-UI 调整

    1.对话框 当打开的对话框页面元素众多,俨然一个iframe页面时,可以做2个优化: 滚动条:对话框去滚动,当对话框内容过多时,把滚动条控制在对话框内部,避免出现页面级的滚动条 标题栏:优化对话框标题 ...

  6. 2.猿人学爬虫攻防第二题 JS 混淆 动态cookie

    题目链接:请点击 抓取到发布日热度的值,计算所有值的加和 1.分析网页 由于是动态Cookie,为了避免其他Cookie的影响,所以使用浏览器的无痕模式进行调试,按f12并选中[Preserve lo ...

  7. [python]邮件发送注意事项

    邮件格式 关于发信,需要遵循国际发信协议要求[4],例如RFC5322协议,避免因为格式不合法,导致被收信服务器拒收. 在二零二三年以前,在开发Python的邮箱发信接口时,对邮箱格式要求不高,主要还 ...

  8. maven打包时跳过TEST的方式汇总

    使用maven打包时如何跳过test,有以下几种方式 针对spring项目 <plugin> <groupId>org.apache.maven.plugins</gro ...

  9. 使用P6Spy监控你的Spring boot数据库操作

    引言 最近换了号称最快的HikariDataSource,由于没有了SQL监控,加之于Mybaits默认输出日志之拙计.遂用此物,与之相仿还有log4jdbc,比较活跃度后选择了P6Spy. 版本 P ...

  10. 【转载】Spring Cloud Gateway-过滤器工厂详解(GatewayFilter Factories)

    http://www.imooc.com/article/290816 TIPS 本文基于 Spring Cloud Greenwich SR2 ,理论支持 Spring Cloud Greenwic ...