【Python Flask+Nginx】实现HTTP、WS (两步实现,简单易懂)

目录

一、创建Flask应用 

二、部署Nginx

2.1 下载Nginx 

2.2 修改Nginx配置文件

2.3 启动Nginx

三、测试


一、创建Flask应用 

        首先我写了如下一个基于Flask的Demo,该Demo包含两个接口一个是HTTP接口(http://127.0.0.1:5000),一个是Websocket接口(ws://127.0.0.1:5000/test)

如果调用HTTP接口,会返回一个json数据:  

{"msg":"ok"}

 如果调用Websocket,会每隔1s返回一个时间:

 Flask应用Demo源码:

import time
from flask_sockets import Sockets
from gevent import monkey
from flask import Flask, jsonify
from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandlermonkey.patch_all()app = Flask(__name__)
sockets = Sockets(app)#  ws接口
@sockets.route('/test')  # 指定路由
def echo_socket(ws):while not ws.closed:ws.send(str(time.asctime()))  # 给clicent传时间# http接口
@app.route('/')
def hello():return jsonify(msg="ok")if __name__ == "__main__":server = pywsgi.WSGIServer(('0.0.0.0', 5000), app, handler_class=WebSocketHandler)print('server start')server.serve_forever()

二、部署Nginx

2.1 下载Nginx 

先去官网下载Nginx(官网下载地址:nginx: download)

141914_eVJV_1455020.png 

 下载后目录如下:

2.2 修改Nginx配置文件

打开配置文件:

 主要修改如下标注区域内容:

        listen:代理后的端口

        servername:填写ip或域名都可以

        proxy_pass:对应的是flask程序启动后的web地址。

复制粘贴: 

listen       9900;
server_name  localhost;proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

2.3 启动Nginx

首先以管理员身份启动cmd,然后cd到含有nginx.exe的目录

启动命令: 

start nginx

 关闭命令:

nginx -s quit

三、测试

1. 首先运行Flask应用:

 

2. 启动Nginx:

 

 3. 测试http接口:

4. 测试websocket接口:(测试地址:websocket在线测试)

 OK,一切正常~,收工

 

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

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

相关文章

Postman如何做接口自动化测试?

前言 什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试,模拟人去操作软件界面,把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码,属于一种软件开发工作,已经开发完…

Mybatis多对多查询案例!

在MyBatis中执行多对多查询需要使用两个主要表和一个连接表(通常称为关联表)来演示。在这个示例中,我们将使用一个示例数据库模型,其中有三个表:students、courses 和 student_courses,它们之间建立了多对多…

RAC sid=‘*‘ 最好加上 v$system_parameter

实验结论:在RAC环境中,最好修改参数sid* 安全可靠,因为暂时未明确知道哪些参数是默认全局修改,什么参数是默认单节点修改的,* 靠谱,不容易出问题 在RAC环境中,修改全局参数scopespfile生效时&am…

sql developer 连不上oracle数据库 报错 ORA-01031: insufficient privileges

sql developer 连不上oracle数据库 报错 ORA-01031: insufficient privileges 1、问题描述2、问题原因3、解决方法4、sql developer 连接oracle 成功 1、问题描述 使用sys账户以SYSDBA角色登录失败 报错 ORA-01031: insufficient privileges 2、问题原因 因为没有给sys账户分…

无涯教程-PHP - Filtered反序列化

PHP 7引入了Filtered unserialize()函数&#xff0c;以在对不受信任的数据上的对象进行反序列化时提供更好的安全性。 <?phpclass MyClass1 { public $obj1prop; }class MyClass2 {public $obj2prop;}$obj1new MyClass1();$obj1->obj1prop1;$obj2new MyClass2();$obj…

Docker-Consul

Docker-Consul 一、介绍1.什么是服务注册与发现2.什么是consul3.consul提供的一些关键特性&#xff1a; 二、consul 部署1.环境准备2.consul服务器3.查看集群信息4.通过 http api 获取集群信息 三、registrator服务器1.安装 Gliderlabs/Registrator2.测试服务发现功能是否正常3…

机器学习简介[01/2]:简单线性回归

Python 中的机器学习简介&#xff1a;简单线性回归 一、说明 简单线性回归为机器学习提供了优雅的介绍。它可用于标识自变量和因变量之间的关系。使用梯度下降&#xff0c;可以训练基本模型以拟合一组点以供未来预测。 二、技术背景 这是涵盖回归、梯度下降、分类和机器学习的其…

MySQL每日一练--校园教务系统

一丶数据库名称&#xff1a;SchoolDB 二丶数据库表信息&#xff1a;角色信息表 表名&#xff1a; t_role 主键&#xff1a; r_id 序号 字段名称 字段说明 类别 位数 属性 备注 1 r_id 角色编号 int 主键 自动增长 2 r_name_EN 角色名&#xff08;英…

学习设计模式之装饰器模式,但是宝可梦

装饰模式 为了不改变组件的结构&#xff0c;动态地扩展其功能。 通常&#xff0c;扩展功能通过子类进行&#xff0c;但是继承的方式具有静态特征&#xff0c;耦合度高。 意图&#xff1a;动态地给对象添加额外的功能 主要解决&#xff1a;继承方式是静态特征&#xff0c;扩…

高效PDF校对:释放高质量内容的力量

在数字化世界中&#xff0c;内容是王者。随着企业和个人越来越依赖数字文档进行沟通、分享和创新&#xff0c;我们在PDF中传递的内容的质量变得至关重要。在这里&#xff0c;我们将探索高效的PDF校对如何帮助您释放高质量内容的真正潜力。 超越仅仅是“正确” 当我们谈论PDF校…

【目标检测】“复制-粘贴 copy-paste” 数据增强实现

文章目录 前言1. 效果展示代码说明3. 参考文档4. 不合适点 前言 本文来源论文《Simple Copy-Paste is a Strong Data Augmentation Method for Instance Segmentation》&#xff08;CVPR2020&#xff09;&#xff0c;对其数据增强方式进行实现。 论文地址&#xff1a;https:/…

[matlab]matlab配置mingw64编译器

第一步&#xff1a;下载官方绿色版本mingw64编译器然后解压放到一个非中文空格路径下面 比如我mingw64-win是我随便改的文件名&#xff0c;然后添加环境变量&#xff0c;选择用户或者系统环境变量添加下面的变量 变量名&#xff1a; MW_MINGW64_LOC 变量值&#xff1a;自己的m…

原生小案例:如何使用HTML5 Canvas构建画板应用程序

使用HTML5 Canvas构建绘图应用是在Web浏览器中创建交互式和动态绘图体验的绝佳方式。HTML5 Canvas元素提供了一个绘图表面&#xff0c;允许您操作像素并以编程方式创建各种形状和图形。本文将为您提供使用HTML5 Canvas创建绘图应用的概述和指导。此外&#xff0c;它还将通过解释…

解决无法远程连接MySQL服务的问题

① 设置MySQL中root用户的权限&#xff1a; [rootnginx-dev etc]# mysql -uroot -pRoot123 mysql> use mysql; mysql> GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY Root123 WITH GRANT OPTION; mysql> select host,user,authentication_string from user; -…

小小讲一下Linux基本命令

Linux是一套类Unix的操作系统&#xff0c;这套系统最大的优点就是安全便捷&#xff0c;快速高效。这就为它赢得了广大的市场空间。但是呢&#xff0c;Linux系统虽然广为流行&#xff0c;它也不是那么容易就可以学会的。比如说&#xff0c;如果我们不懂得Linux系统的基本操作命令…

【es6】中的Generator

Generator 一、Generator 是什么&#xff1f;1.1 与普通函数写法不一样&#xff0c;有两个不同 二、Generator 使用2.1 书写方法 三、yield语句3.1 yield和return3.2 注意事项3.3 yield*语句3.4 yield*应用 四、next方法4.1参数4.2 运行逻辑 五、异步解决方案六、Generator相关…

Java“牵手”根据关键词搜索(分类搜索)lazada商品列表页面数据获取方法,lazadaAPI实现批量商品数据抓取示例

lazada商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取lazada商品列表和商品详情页面数据&#xff0c;您可以通过开放平台的接口或者直接访问lazada商城的网页来获取商品详情信息。以下是两种常用方法的介…

浅析C指针

文章目录 前言指向整型变量的指针指向一维数组的指针以指针为形参且以指针为返回值类型以局部变量地址作为返回值存在的安全隐患 指向字符串的指针通过指针交换两变量的值多级指针指针数组数组指针指向函数的指针 前言 C语言中的指针实质是指向某一对象的内存地址&#xff0c;…

mysql的group by与order by同时使用导致排序

场景描述&#xff1a;接手离职同事的一行代码&#xff0c;如下&#xff1a; select pdtm.name,pdtm.temperature,pdtm.humidity,pdtm.pressure from ( select pp.id,p.name,pp.temperature,pp.humidity,pp.pressure from phe_device_thermo_mst p LEFT JOIN phe_device_thermo…

keepalived

目录 keepalived概述 vrrp工作原理 keepalived体系主要的模块及其作用 模块 core模块 vrrp模块 check模块 作用 keepalived工作原理 keepalived和lvs-DR实验 keepalived概述 keepalived高可用应用&#xff08;健康检查&#xff0c;故障切换&#xff09; 节点服务器…