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. The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online (The 2nd Universal Cup

    The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online (The 2nd Universal Cup. Stage 1: Qingdao) J ...

  2. ThreeJs-05纹理材质高级操作

    1.纹理操作 1.1 重复.旋转.位移.缩放 重复 但是要在水平方向上重复,还得允许 按照刚才的重复方式 如果设置为镜像重复 位移 旋转 1.2 翻转与alpha生成颜色 正常的图 不翻转默认是翻转的 ...

  3. S2P销讯通-SFE人才对企业管理层至关重要

    SFE这一概念,最初由外资企业引入,如今已逐渐被内资企业所采纳并融入其组织结构中,不少企业正积极构建这一部门. 1 我们观察到,近两年企业内对于SFE部门所需的人才需求急剧上升.这一部门,在外资企业中 ...

  4. influxdb数据库结构小结

    转载请注明出处: InfluxDB 是一个开源的时序型数据库,它的数据主要存储在三个文件夹中:data.meta 和 wal. data 文件夹:这个文件夹存储的是 InfluxDB 的数据文件,也称 ...

  5. 使用TOPIAM 轻松搞定「Wiki.js」单点登录

    本文将介绍 TOPIAM 与 Wiki 集成步骤详细指南. 应用简介 Wiki.js 是一款高度可定制且现代化的开源 Wiki 系统,专为团队知识管理和文档协作设计,具有强大的扩展性和跨平台支持能力. ...

  6. 论文解读《The Philosopher’s Stone: Trojaning Plugins of Large Language Models》

    发表时间:2025 期刊会议:Network and Distributed System Security (NDSS) Symposium 论文单位:Shanghai Jiao Tong Univ ...

  7. PM-数据治理中,常用的术语解释

    1 指标 是表征和评价一项或多项经营活动业务绩效的指示.指标由指标名称和指标数值两部分组成,指标名称及其涵义体现指标在质和量方面的规定性,指标数值反映指标在具体对象在特定时间.空间.条件下的数量表现. ...

  8. Tauri2.0-Vue3OS桌面端os平台|tauri2+vite6+arco电脑版OS管理系统

    自研tauri2.x+vite6+vue3+arco.design客户端os管理系统Tauri2ViteOS. vue3-tauri2-os原创跨平台Tauri2.0+Vite6+Pinia2+Arc ...

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

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

  10. 【Python】【Jupyter】Jupyter 的简单使用 与 Python的基本输出输入

    上课无聊写着玩的,不必当真. Jupyter 的简单使用 与 Python的基本输出输入 目录 Jupyter 的简单使用 与 Python的基本输出输入 数据准备 输出 输入 一些练习 print( ...