使用uwsgi部署Flask应用

news2024/9/23 15:32:33

前言:本人大四,研0,在24年暑假在杭州某互联网公司实习,本文用来记录自己在公司学到的东西。

uwsgi:uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。uWSGI就像是一座桥梁,一边连着web服务器,另一边连着用户的应用。

Flask:Flask是一个使用Python编写的轻量级Web应用框架,它简洁而灵活,适用于开发小型至中型的Web应用。

项目背景:使用Xception预训练模型完成ai换脸检测。

一、程序撰写

这边我没有去训练自己的模型,使用的是pytorch里面的Xception模型,当然用tensorflow和Keras也是可以的,主要更改的地方是修改了模型最后一层的输出,因为换脸检测的输出是有没有进行换脸,有和无,相当于是二分类问题,然后xception模型是基于imagenet训练而来,输出有1000个分类,所以我们需要修改模型的最后一层以适应二分类任务:

# 打印模型结构,查找最后一层
# print("Model structure:\n", model)

# 获取最后一层的输入特征数
num_features = model.get_classifier().in_features

# 修改模型的最后一层以适应二分类任务
model.fc = nn.Linear(num_features, 1)  # 二分类任务:1 输出神经元
model.sigmoid = nn.Sigmoid()  # 添加 Sigmoid 激活函数

model.eval()  # 将模型设置为评估模式

这边只粘贴出部分,或许完整的程序将公布到我的Github上,有兴趣的小伙伴可以关注一下我,这是我的Github id:

                                  

二、uswgi和Flask的下载和使用

1.安装Flask和uswgi:

pip install flask uwsgi

2.创建一个app.py把fask应用代码粘贴进去,这边flask应用代码我用最简单的示意一下

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'
# 下面这两句在使用uwsgi 测试的时候要注释掉,是在没有集成uwsgi前测试用:python app.py
if __name__ == '__main__':
    app.run()

3.编写uwsgi.ini文件

[uwsgi]
#地址端口
http = 0.0.0.0:5005
#项目路径
chdir = /app/deepfake_detection
#项目启动文件
wsgi-file = app.py
# 项目需要调用的启动类
callable = app
# 进程线程设置
processes = 1
threads = 5
#PID 文件路径
pidfile = /app/deepfake_detection/logs/uwsgi.pid
# 是否需要主进程
master = True
# CUDA上使用多线程
lazy = true
#添加日志
daemonize = /app/deepfake_detection/uwsgi.log
# 缓存区
buffer-size = 65535

4.启动uwsgi服务

# uwsgi.ini要换成给你的名字
uwsgi --ini uwsgi.ini

5.打开浏览器访问设置的端口

#192.168.0.120是你服务器的地址,5005是端口号,需要具体情况更改
http://192.168.0.120:5005

6.停止uwsgi服务

uwsgi --stop uwsgi.ini

注:本篇文章只是记录了大概流程,实际在做的过程中,可能下载uwsgi就会遇到各种问题,下载失败,最后可能还需要源码安装,然后完整的项目文件我会稍后公布到Github上,关注可取

 docker命令:

1.进入docker容器:

docker exec -it my_container /bin/bash

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

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

相关文章

集合的基本使用

数据和集合的区别 数组可以存储基本数据类型和引用数据类型。 但是,集合不可以直接存储基本数据类型,需要以包装类的方式进行存储,其可以存储引用数据类型。 ArrayList 成员方法 import java.util.ArrayList;/*** ClassName Test* author …

[Meachines] [Easy] Postman redis未授权访问-SSH公钥注入+RSA私钥解密+Webmin-RCE权限提升

信息收集 IP AddressOpening Ports10.10.10.160TCP:22,80,6379,10000 $ nmap -p- 10.10.10.160 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048…

计算机基础(Windows 10+Office 2016)教程 —— 第7章 演示文稿软件PowerPoint 2016

第7章 演示文稿软件PowerPoint 2016 7.1 PowerPoint 2016入门7.1.1 PowerPoint 2016 简介7.1.2 PowerPoint 2016 的操作界面组成7.1.3 PowerPoint 2016 的窗口视图方式7.1.4 PowerPoint 2016 的演示文稿及其操作7.1.5 PowerPoint 2016 的幻灯片及其操作 7.2 演示文稿的编辑与设…

win 10 局域网共享

1,打开共享 控制面板\网络和 Internet\网络和共享中心\高级共享设置 (在控制面板界面建议使用大图片或小图标容易找到目标) 或者直接复制红色部分,然后打开此电脑,粘贴到地址栏直接回车即可直接到达几面 打开如下2个…

HCIP-综合实验

实验题目与要求如下所示: 根据题目要求进行划分网段: 1、配置各个路由器的ip地址以及环回地址: R1 R2 R3 R4 R5 R6 R7 2、配置rip的基本功能:启动rip进程,指定网段使用rip R1 R2 R3 R4 R5 R6 R7 3、R1创建环回172.…

微信答题小程序产品研发-页面交互设计

答题小程序页面交互设计,针对答题小程序的所有主要页面和功能模块,包括首页、轮播图、公告、微信授权登录、题库练习、出题考试、错题集、答题历史、收藏、个人中心等。 1、目的 答题小程序页面为什么要进行交互设计? 据我分析,…

品牌热度维系策略:深度触达,让每一次互动都成为爱的记忆累积

在浩瀚的商业宇宙中,每一个品牌都如同夜空中闪烁的星辰,它们或明或暗,共同编织着市场的繁星图景。当谈及品牌与消费者之间那份微妙而深邃的情感联结时,我们不禁要深入探讨一个核心议题:在快速迭代的消费时代&#xff0…

二十天刷leetcode【hot100】算法- day1[后端golang]

哈希表 其他语言版本 ts-day1 js-day1 python-day1 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xf…

ue5 打开关卡,未正常加载地形及物品。资产必须放在content目录下

1.资产必须放在content目录下 2.要把A拿到B去用,必须使用资产迁移,不可直接拷贝,因为有依赖文件

Qt 学习第四天:信号和槽机制(核心特征)

信号和槽的简介 信号和插槽用于对象之间的通信。信号和插槽机制是Qt的核心特征,可能是不同的部分大部分来自其他框架提供的特性。信号和槽是由Qt的元对象系统实现的。介绍(来自Qt帮助文档Signals & Slots) 在GUI编程中,当我们…

安装sqllab靶机之后,练习关卡报403 forbidden

解决办法: 在nginx的conf文件中添加上访问index.php vim /usr/local/nginx/conf/nginx.conf 保存退出 再重启一下nginx,就完成了。 ./nginx -s reload

中国AI大模型场景探索及产业应用调研报告

AI大模型发展态势 定义 AI大模型是指在机器学习和深度学习领域中,采用大规模参数(至少在一亿个以上)的神经网络模型,AI大模型在训练过程中需要使用大量的算力和高质量的数据资源。 产业规模 2023年,中国大模型市场规模为147亿。结合《202…

python pip怎么安装包

按WinR键打开运行窗口,输入“cmd”,再按回车键,打开命令行窗口。 找到pip安装路径。 Python2/Python3安装路径是相同的,都在x:\Python xx\Scripts路径下。 拖动pip主应用程序到命令行窗口。 输入“install 模块/包名”&#xff…

Ubuntu22.04之VirtualBox7.0.18安装Win10无法启用增强功能问题(二百六十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…

优盘驱动器未格式化:数据拯救行动指南

优盘困境:驱动器未格式化的挑战 在日常的数据存储与传输中,优盘以其便携性和高容量成为了我们不可或缺的伙伴。然而,当您尝试访问优盘时,突然弹出的“驱动器未被格式化”提示却如同晴天霹雳,让人措手不及。这一状况不…

AI写作|告诉你CoT的几个简单步骤,使用后大幅提升AI的推理能力

随着对 AI 不断了解,我深切体会到一个高效的提示词有多重要。希望这篇能给不会写高效提示词的朋友一些思路,让你能更顺手地使用 AI。 什么是思考链 (CoT) 思考链(Chain of Thought,简称 CoT)是一种推理策略&#xff0c…

Git代码冲突怎么处理?

我们在使用Git时难免会出现代码冲突的问题,出现冲突的原因是因为当本地文件的版本与目标分支中文件的版本不一致时当存在同一行的内容不同时在进行合并时会出现冲突。 代码冲突一般发生在以下情况: 1、多个分支向主分支合并时 2、同一个分支下pull或push操作时。 为…

python 可视化探索(四):电商数据可视化案例

总结:本文为和鲸python 可视化探索训练营资料整理而来,加入了自己的理解(by GPT4o) 注意跟练题目3中提到的多种数据替换方式,非常值得学习!! 原作者:作者:大话数据分析…

【人工智能专栏】Focal Loss 可以平衡简单样本和困难样本(或大量样本和少量样本)的学习

Focal Loss 理念 Focal loss 可以 平衡简单样本和困难样本(或大量样本和少量样本)的学习 。在遇到样本不同类别之间学习难度相差很大(比如区分飞机、摩托车和自行车,飞机的特征明显与后两者更易区分,可以用混淆矩阵看出来),或者样本数量相差很多时(飞机有 1k 个样本,…

智联招聘岗位数据采集攻略:五步走,轻松搞定职位信息

摘要: 本文将手把手教你利用Python编写一个轻量级的智联招聘岗位信息采集器,无需复杂工具,仅需五步,即可实现高效职位信息抓取。通过实战演练,你将掌握网络爬虫基础、请求处理、解析技术及数据清洗技巧,助…