使用 Python 实现 Web 服务器(python做web服务)
off999 2024-11-08 12:53 66 浏览 0 评论
使用 Python 实现 Web 服务器
使用 Python 来实现一个 Web 服务器,可能大家都感觉到奇怪,为什么会有这样的需求呢?原因很简单,当我们需要在 Windows 或者其他操作系统上实现一个应用,而这个应用已经使用 Web 技术开发好的情况下,此时我们就需要实现一个能够嵌入到应用程序中的 Web 服务器。本文介绍的使用 Python 实现的 Web 服务器可以实现这个功能,而 Python 本身提供了 Windows 环境下的嵌入式版本。也就是说,我们通过 Python embed 版本结合自己编写一些代码即可实现一个嵌入式的 Web 服务器,该服务器可以随着你的应用程序的启动而启动,随着你的应用程序的关闭而终止。
由于前后端分离的开发方式,我们现在开发的 Web 应用程序大部分都是页面部分独立部署,API 部分独立部署,这样的话,我们的 Web 服务器就只需要实现静态页面的访问和 API 的请求,正如 Nginx 一样,我们在这里只需要实现能够访问静态页面,同时实现类似于 Nginx 的反向代理功能即可。
1.静态页面的访问
在 Python 中,可以实现 Web 服务器的框架有很多,包括:
- Django
- Flask
- Tornado
是三大著名的 Python Web 框架,这三大框架都可以实现我们的需求,今天我们以 Flask 为例来说明。
对于静态页面的访问,在 Flask 中,只需要在 Flask 类实例中指定静态文件夹,并指定其url ,如:
app = Flask(__name__, static_folder='static', static_url_path="/xxxxxx")上面的代码需要我们在项目所在目录下创建一个 static 目录,并把所有的静态页面或者文件存放到该目录,在浏览器中访问时的 url 为 /xxxxxx。
一般情况下,我们会将开发中编译生成的 html 文件放置到 static 目录下,并且在访问时直接在根路径访问,所以上面的 static_url_path 设置为 "/",这种情况下,我们需要对根目录的访问重定向一下,如:
@app.route("/")
def index():
return redirect('/index.html')2.实现类似于 Nginx 的反向代理
实现该功能需要在 Flask 中拦截所有请求,然后判断请求的 url 中的 path,如果是需要代理到其他服务器的请求,则请求其他服务,一般是 api,然后将请求结果返回即可。如:
proxy_list = {
'/xxx_api': 'http://127.0.0.1:18888',
'/yyy_api': 'http://127.0.0.1:18888',
'/zzz_api': 'http://127.0.0.1:18888'
}
@app.before_request
def proxy():
path = request.path
method = request.method
headers = request.headers
data = request.get_data()
params = request.args
for key in proxy_list.keys():
if path.startswith(key):
url = proxy_list.get(key) + path
resp = requests.request(\
method=method, url=url, params=params, data=data, headers=headers)
return Response(response=resp.content, status=resp.status_code)3.完整的代码
# coding: utf-8
from flask import Flask
from flask import Response
from flask import redirect
from flask import request
import requests
app = Flask(__name__, static_folder='static_backstage', static_url_path="/")
@app.route("/")
def index():
return redirect('/index.html')
proxy_list = {
'/oth_api/': 'http://127.0.0.1:18888',
'/qycommon_api': 'http://127.0.0.1:18888',
'/qybackstage_api': 'http://127.0.0.1:18888'
}
@app.before_request
def proxy():
path = request.path
method = request.method
headers = request.headers
data = request.get_data()
params = request.args
for key in proxy_list.keys():
if path.startswith(key):
url = proxy_list.get(key) + path
resp = requests.request(method=method, url=url, params=params, data=data, headers=headers)
return Response(response=resp.content, status=resp.status_code)
def main(port: int):
app.run(host='127.0.0.1', port=port)
if __name__ == "__main__":
main(7000)相关推荐
- dell笔记本客服电话(dell笔记本客服电话人工服务)
-
戴尔中国的官方网站http://www.dell.com/zh-cn。通过这个网站购买的都没有问题;有问题也可以进入官网联系售后客服,也可以拔打dell电脑说明书上的售后热线,都可以为你解决的。还是建...
- 联想乐商店app官方下载(联想乐商店在哪下载)
-
您好!很遗憾!若是您的手机联想乐商店和联想游戏中心只能有流量,建议您核实是否乐安全有限制wifi上网,核实您所使用的wifi是否本身有限制。若还是无效,可清除缓存数据;备份资料恢复出厂设置尝试。欢迎您...
- 不用拉网线的路由器是真的吗
-
是真的不插卡不拉线有线就有网,这11个字其实就涵盖了无线路由器的特点,无线路由器免插卡、不用拉网线,完全摆脱了之前家用路由器和网线捆绑的模式,有电就有网,其实说的就是无线路由器的使用操作简单,通电就可...
- u盘检测软件下载(u盘测试软件)
-
1、u盘芯片检测工具(ChipEasy)可以查看USB设备PID、VID、SN、制造商、产品名等;2、查看USB设备主控芯片信息、闪存芯片信息、固件信息、电流控制3、SSD型号...
- 电脑现在什么系统最好(电脑现在用什么系统好)
-
WINXP好用,但过时了。VISTA不好用,没推开就夭折了。WIN8/8.1是针对触模屏设计的,如果你用的不是触摸屏平板电脑是普通电脑,使WIN8/8.1总觉着很蹩扭。新出的WIN10,功能...
- 账号怎么注册(steam账号怎么注册)
-
如果注册是qq账号【qq号码的申请办法】【1】双击qq登陆界面,在qq帐号填写空格的后面你可以看见:[申请帐号];【2】点击[申请帐号]进入,就可以在网上免费申请号码了;【3】进入www.qq.com...
- tmp文件是什么意思(tmp文件有什么用)
-
在系统C:\Windows\Temp文件夹中,我们经常会发现一些后缀名为TMP的文件,在该文件夹中的这些文件其实都是临时文件。它们可能是系统被误关机,或者其他程序没有删除而生的。而且在该文件夹中还有其...
- 怎么给u盘格式化(怎么给u盘格式化成FAT32)
-
u盘插入电脑,等待桌面弹出u盘图标。打开“计算机”。左键选中u盘,单击右键,在弹出的菜单中,点击“格式化”。点击“开始”,点击“确定”即可。格式化u盘详细步骤1、找到U盘盘符,鼠标右键点击,弹出菜单中...
- harmonyos主题下载(harmonyos主题怎么换)
-
首先,打开荣耀手机的应用市场,在搜索框中输入“华为鸿蒙主题”,然后点击搜索。找到“华为鸿蒙主题”应用后,点击下载即可。下载完成后,打开“华为鸿蒙主题”应用,选择心仪的主题,点击下载并应用即可享受华为鸿...
- 戴尔笔记本电脑黑屏却开着机
-
对于电脑黑屏的处理基本上采用排除、替换相结合的方法,其原则应本着先替换排除可疑性最大的部件。对于普通电脑用户来讲,专业知识不足,可以按下列步骤分析故障原因,以便可以自己动手排除故障。首先检查接触是否良...
- 手机版电脑桌面下载(手机电脑桌面下载软件安装包)
-
只有电脑版手机助手软件,没有手机桌面这个软件在电脑上点击今日头条APP下载安装即可哦你好,陌陌电脑版如果说你想要下载到电脑桌面的话,你只需要长按把它添加到你的电脑桌面就可以了。要将软件下载到桌面并创建...
- ghost备份中文图解(ghost备份1837)
-
其实是这样的ghost文件备份后会生成两个文件一个是.GHO一个是.GHS文件FAT32格式的分区,单个文件最大只支持到2G(2048M),如果你的镜像>2G,这时的做的GHOST在一个文件里装...
- win10一键重装win7(win10一键重装系统)
-
1、首先准备一个4GB以上可以正常使用的U盘。2、在一个可以正常使用的电脑上,下载老毛桃软件并安装。3、去网上下载所需的win7,win10选择自己所需要的系统,并下载下来。4、插入u盘并打开老毛桃...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
