python制作网页服务器_python网络编程学习--简易网站服务器制作

news/2024/5/9 4:59:30/文章来源:https://blog.csdn.net/weixin_39674028/article/details/110170633

python `网络编程`和其他语言都是一样的,服务器这块步骤为:

`1. 创建套接字`

`2. 绑定地址`

`3. 监听该描述符的所有请求`

`4. 有新的请求到了调用accept处理请求`

Python Web服务器网关接口(Python Web Server Gateway

Interface,简称`“WSGI”`),可以保证同一个服务器响应不同应用框架的请求,WSGI的出现,让开发者可以将网络框架与网络服务器的选择分隔开来,例如,你可以使用Gunicorn或Nginx/uWSGI或Waitress服务器来运行Django、Flask或Pyramid应用。下面简单实现一个机遇WSGI协议的服务器。

20170906154224_492.png

定义了一个WSGIServer类,并且在类的init函数完成了套接字的创建、绑定、监听等。

下面实现WSGIServer的轮询检测新的连接并处理连接:

20170906154232_73.png

实现处理请求的函数

20170906154237_969.png

解析请求

20170906154243_385.png

返回当前服务器wsgi版本等信息

20170906154247_243.png

填写app所需的回调函数

20170906154253_418.png

发送数据并且关闭连接

20170906154258_160.png

主函数和参数解析,创建服务器

20170906154302_228.png

将上面的文件保存为webserver.py

下面搭建虚拟环境,并且安装Pyramid、Flask和Django等框架开发的网络应用。

20170906154307_601.png

编写pyramidapp.py,主要是调用pyramidapp接口生成app

20170906154313_287.png

可以通过自己开发的网络服务器来启动上面的Pyramid应用。

`python webserver.py pyramidapp:app`

20170906154335_143.png

20170906154340_290.png

同样可以创建Flask应用

20170906154345_847.png

20170906154350_102.png

上述代码的工作原理:

`1 网络框架提供一个命名为application的可调用对象`。

`2

服务器每次从HTTP客户端接收请求之后,调用application。它会向可调用对象传递一个名叫environ的字典作为参数,其中包含了WSGI/CGI的诸多变量,以及一个名为start_response的可调用对象`。

`3 框架/应用生成HTTP状态码以及HTTP响应报头(HTTP response

headers),然后将二者传递至start_response,等待服务器保存。此外,框架/应用还将返回响应的正文。

服务器将状态码、响应报头和响应正文组合成HTTP响应,并返回给客户端`。

可以采用多进程的方式处理多个客户端请求,将上述代码稍作修改

20170906154355_830.png

20170906154401_937.png

20170906154407_639.png

grim_reaper

函数为捕捉子进程退出的回调函数,父进程等待所有子进程退出后再退出,避免僵尸进程。由于子进程退出父进程捕获到消息,调用grim_reaper处理,由于父进程之前阻塞在accept上,捕获子进程销毁消息后,父进程accept失败,所以增加了errno.EINTR错误判断,如果是由于信号中断导致accept失败,就让父进程继续调用accept即可。

20170906154412_734.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_765958.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web服务器创建站点,Dreamweaver创建Web站点的六个步骤流程

对于一个SEO优化人员来说,虽然不要求对于网站建站有多么精通,但是还是必须要懂得一些使用建站工具的基本操作。在Dreamweaver中,Web站点可视为网站中所有文件的集合。我们可以在本地计算机上创建Web页,也可将Web页上传至Web服务器…

web性能优化 高性能网站建设指南

公司的平台需要对访问速度等进行优化,大致的方向就是从缓存、压缩、减少请求等方面进行处理,不光需要对网络有一定的理解,也需要对浏览器的机制以及前端的技术等有些许的了解,在这个过程中,阅读了《高性能网站建设指南…

PHP 亿级 pv 网站架构实战之性能压榨

1. 性能优化的原则 性能优化是建立在对业务的理解之上的性能优化与架构、业务相辅相成、密不可分的 2. 性能优化的引入 我们先看一张简单的 web 架构图 从上到下从用户的浏览器到最后的数据库,那么我们说先前端的优化。 3. 前端优化 雅虎军规:http://www…

网站常用的html5效果,30个使用HTML5技术的电子商务网站

30个使用HTML5技术的电子商务网站5月 4, 2012评论Sponsor现在在网上已经很容易找到HTML5的网站,但大部分都没有分类或是不太实用,今天就此为大家分享一些已经商业化而且遍布全球的电子商务网站,这些网站都是采用了一些HTML5的技术&#xff0c…

服务器上网站上的数据库密码,服务器上网站上的数据库密码是什么

服务器上网站上的数据库密码是什么 内容精选换一换本章节指导您使用MongoDB客户端和Robo 3T工具,通过公网连接副本集实例。用户可以直接操作副本集主节点和备节点。主节点用于读写请求,您可以连接主节点对数据进行读写操作。备节点复制主节点数据&#x…

电脑壁纸尺寸比例_8个高清二次元amp;动漫壁纸网站推荐

前言天天和电脑、手机以及平板等电子设备打交道,一个好看的桌面壁纸图片当然是必不可少的,也曾经分享过《值得珍藏的高清壁纸网站推荐》,各种类型和分辨率的壁纸都有。今天再分享些「高清二次元&动漫壁纸网站」,2K~8K 分辨率的…

查看网站的爬虫协议,简单介绍爬虫协议robots.txt,避免爬虫爬的好,牢饭吃得早(保姆级图文)

目录什么是爬虫协议查询方法解读协议内容总结欢迎关注 『Python』 系列,持续更新中 欢迎关注 『Python』 系列,持续更新中 什么是爬虫协议 正经正规网站一般都会有设置爬虫协议,规定哪些能够让你爬,哪些不能让你爬。 网页的爬虫协…

分享编程能力自我提升的8个免费网站,算法学习刷题,求职面试经验(图文并茂+简略介绍)

目录1. LeetCode力扣2. lintcode炼码3. luogu洛谷4. jisuanke计蒜客5. 牛客网6. PTA(拼题A)7. vjudge(英语)8. codeforces(英语)总结欢迎关注 『发现你走远了』 博客,持续更新中 欢迎关注 『发现…

一个免费在线文件处理网站-HEIC转JPG Word转长图 PPT转长图 转成JPG 转成PNG 转成BMP(保姆级图文)

步骤系列文章功能图片转ICON 功能介绍:总结系列文章 提示:转到日常小技巧专栏,观看更多内容! 点我直达–>日常小技巧专栏 功能 pdf转word、pdf转图片图片转icon文本转语音语音转文本PPT和word转长图HEIC转JPG Word转长图 PPT…

【宝塔面板建站】01. 5分钟windows宝塔面板的安装(保姆级图文)

目录1. 下载宝塔面板2. 安装宝塔面板3. 初始化面板4. 安装套件关于建站使用总结『宝塔面板建站』分享宝塔面板从安装到实战的宝塔面板本机免云服务器免域名搭建网站等内容。 欢迎关注 『宝塔面板建站』 系列,持续更新中 欢迎关注 『宝塔面板建站』 系列,…

【宝塔面板建站】02. 实用必装的插件之Windows工具箱 2.0,可视化管理端口,host管理(保姆级图文)

目录安装Windows工具箱 2.0Windows工具箱 2.0使用总结『宝塔面板建站』分享宝塔面板从安装到实战的宝塔面板本机免云服务器免域名搭建网站等内容。 欢迎关注 『宝塔面板建站』 系列,持续更新中 欢迎关注 『宝塔面板建站』 系列,持续更新中 安装Windows工…

【宝塔面板建站】03. mysql相关内容->mysql数据的备份、mysql版本的升级切换(保姆级图文)

目录前往软件商店的mysql设置页面备份数据计划任务定时自动备份数据库mysql版本切换清空数据库切换版本回收站恢复被删除的数据库总结『宝塔面板建站』分享宝塔面板从安装到实战的宝塔面板本机免云服务器免域名搭建网站等内容。 欢迎关注 『宝塔面板建站』 系列,持续…

【宝塔面板建站】04. 设置消息通道,通过邮箱、钉钉、企业微信等形式动态提供网站信息(保姆级图文)

目录消息通道的作用设置消息通道邮箱安装模块配置SMTP服务(邮件发送者)填写收件邮箱(邮件接收者)收到测试邮件钉钉安装模块电脑版钉钉得到一个没用的普通群聊添加群机器人阿里云Code得到了Webhook 地址把得到的Webhook 地址配置到…

【宝塔面板建站】05. 七牛云存储使用教程 免费备份10G数据(保姆级图文)

目录实现效果注册并实名一个七牛云帐号配置七牛云存储空间新建对象存储空间域名管理解析域名得到CNAME检查加速域名配置是否成功获取七牛云密钥得到2个密钥宝塔面板配置七牛云安装七牛云插件设置七牛云插件计划任务备份数据库测试执行备份测试在七牛云中查看备份的文件日志分析…

【宝塔面板建站】06. 关闭暂时不用的服务,避免apache和mysql等服务开机自启占用内存(保姆级图文)

目录遇到的问题1.把服务设置为手动启动打开服务打开服务的属性设置apache、mysql等服务为手动启动重启计算机后服务不会启动2.使用时,手动开启服务或bat命令一键启动总结『宝塔面板建站』分享宝塔面板从安装到实战的宝塔面板本机免云服务器免域名搭建网站等内容。 欢…

【宝塔面板建站】10分钟windows宝塔面板一键部署安装shopxo在线商城,无需服务器和域名本地运行(保姆级图文)

目录傻瓜式一键部署一键部署修改本地host访问域名,启动网站的安装程序访问建成的网站总结『杂记』分享一些实用的技巧方法 安装环境,配置环境教程,推荐实用软件 软件的使用问题。 欢迎关注 『宝塔面板建站』 系列,持续更新中 欢迎…

【宝塔面板建站】10分钟windows宝塔面板一键部署安装wordpress,无需服务器和域名本地运行(保姆级图文)

目录傻瓜式一键部署一键部署修改本地host访问域名,启动网站的安装程序访问建成的网站总结『杂记』分享一些实用的技巧方法 安装环境,配置环境教程,推荐实用软件 软件的使用问题。 欢迎关注 『宝塔面板建站』 系列,持续更新中 欢迎…

【宝塔面板建站】10分钟windows宝塔面板手动通用部署站点shopxo在线商城,无需服务器和域名本地运行(保姆级图文)

目录手动安装,通用方法可以用来安装所有类似的网站1. 下载shopxo商城源码2. 添加站点并创建数据库3. 把第一步下载的网站源码放入我们新建的站点修改本地host访问域名,启动网站的安装程序访问建成的网站总结『杂记』分享一些实用的技巧方法 安装环境&…

【宝塔面板建站】启动面板卡死在“正在启动Panel服务”解决(保姆级图文)

目录报错效果解决思路1.先检查环境变量2.重启宝塔服务打开服务把被禁用的宝塔服务改为手动总结『宝塔面板建站』分享宝塔面板从安装到实战的宝塔面板本机免云服务器免域名搭建网站等内容。 欢迎关注 『宝塔面板建站』 系列,持续更新中 欢迎关注 『宝塔面板建站』 系…