阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘

安装虚拟环境:

1、安装virtualenv

pip install virtualenv

2.创建新的虚拟环境:

virtualenv myenv

3、激活虚拟环境(激活环境可以在当前环境下安装包)

source myenv/bin/activate

此时,终端会更改为显示已被激活的虚拟环境名称,(myenv)

4、退出虚拟环境

deactivate

特别的为虚拟环境制定python版本

virtualenv -p=/usr/bin/python<version> path/to/new/virtualenv/

安装的过程:

创建python文件(app.py

cd /home/myenv

touch app.py

安装flask

pip install Flask

编写app.py文件

nano app.py

复制代码
from flask import Flask

app = Flask(__name__)

@app.route('/', methods=['GET'])
def hello_world():
    return 'Hello Flask!'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

编写完成

ctrl+O 保存,提示然后回车

ctrl+x 退出

安装gunicorn

pip install gunicorn

gunicorn的一些使用命令:

查看gunicorn的进程数树:

pstree -ap|grep gunicorn

关闭gunicorn:

kill -9 3308

重启gunicorn;

kill -HUP 3308

然后用gunicorn启动app.py文件

gunicorn -w 4 -b 0.0.0.0:5000 app:app

参数含义
  • -w:工作进程数
  • -b:绑定的地址和端口
  • app:Flask 启动的 Python 文件名
  • app:脚本中创建的 Flask 对象名

然后报错了,提示超时tiomeout

复制代码
[2025-06-09 16:29:31 +0800] [48889] [CRITICAL] WORKER TIMEOUT (pid:48892)
[2025-06-09 16:29:31 +0800] [48892] [ERROR] Error handling request (no URI read)
Traceback (most recent call last):
  File "/home/myenv/lib/python3.10/site-packages/gunicorn/workers/sync.py", line 133, in handle
    req = next(parser)
  File "/home/myenv/lib/python3.10/site-packages/gunicorn/http/parser.py", line 41, in __next__
    self.mesg = self.mesg_class(self.cfg, self.unreader, self.source_addr, self.req_count)
  File "/home/myenv/lib/python3.10/site-packages/gunicorn/http/message.py", line 259, in __init__
    super().__init__(cfg, unreader, peer_addr)
  File "/home/myenv/lib/python3.10/site-packages/gunicorn/http/message.py", line 60, in __init__
    unused = self.parse(self.unreader)
  File "/home/myenv/lib/python3.10/site-packages/gunicorn/http/message.py", line 271, in parse
    self.get_data(unreader, buf, stop=True)
  File "/home/myenv/lib/python3.10/site-packages/gunicorn/http/message.py", line 262, in get_data
    data = unreader.read()
  File "/home/myenv/lib/python3.10/site-packages/gunicorn/http/unreader.py", line 36, in read
    d = self.chunk()
  File "/home/myenv/lib/python3.10/site-packages/gunicorn/http/unreader.py", line 63, in chunk
    return self.sock.recv(self.mxchunk)
  File "/home/myenv/lib/python3.10/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
    sys.exit(1)
SystemExit: 1

解决办法:

错误原因:接口返回时间超时。默认情况下,Gunicorn 超时时间为30秒。如果接口30秒内没有返回结果,Gunicorn 会弹出超时错误,并且会杀死flask服务重启。

解决方法

解决方法是在启动命令中加大超时参数--timeout。

样例,设置超时时间为200秒

单位是秒

gunicorn -w 4 -b 0.0.0.0:5000 --timeout 200 app:app

重新启动

gunicorn -w 4 -b 0.0.0.0:5000 --timeout 200 app:app

注意启动文件必须实在myenv文件夹下,否则不会成功

再次启动就成功了!!

直接访问:记得使用阿里云公网ip,加端口号。(安全组添加5000端口)

文件配置 Gunicorn 参数:

myenv下创建gunconf.py

复制代码
# 是否开启debug模式
debug = False
# 访问地址
bind = "0.0.0.0:5000"
# 工作进程数
workers = 4
# 工作线程数
threads = 2
# 超时时间
timeout = 200
# 输出日志级别
loglevel = 'debug'
# 存放日志路径
pidfile = "log/gunicorn.pid"
# 存放日志路径
accesslog = "log/access.log"
# 存放日志路径
errorlog = "log/debug.log"
# gunicorn + apscheduler场景下,解决多worker运行定时任务重复执行的问题
preload_app = True

myenv下分别创建"log/gunicorn.pid"、"log/access.log"、"log/debug.log"

然后用文件启动:

至此搭建完毕!

gunicorn的一些参考命令介绍:

https://cloud.tencent.com/developer/article/1902723

一些unbantu的命令:

复制文件:

cp example.txt /home/user/documents/

删除文件命令:

rm app.py

创建文件命令:

touch app.py

创建文件夹:

mkdir myfolder

查看端口被占用的情况:

1、查找特定端口的占用情况:如果您知道某个特定端口被占用,可以结合grep命令来查找。例如,如果您想查找80端口的使用情况,可以输入以下命令。

netstat -tln | grep 80

2、查找占用端口的进程:使用以下命令来查找占用特定端口的进程。例如,如果您想查找占用80端口的进程,可以输入以下命令。

lsof -i:80

3、终止进程

kill -9 80

相关推荐
循环渐进Forward20 分钟前
【TinyWebServer】HTTP连接处理
linux·网络·c++·网络协议·算法·http
字节高级特工31 分钟前
【Linux篇】细品环境变量与地址空间
linux·运维·服务器·c语言·c++·ubuntu·centos
想躺在地上晒成地瓜干1 小时前
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
linux·网络·音视频·树莓派·raspberrypi·树莓派教程
开挖掘机上班1 小时前
shell批量添加新用户
linux·服务器·shell
Cyrus_柯1 小时前
网络编程(Modbus进阶)
linux·c语言·网络·tcp/ip
brooknew1 小时前
从中科大镜像获取linux内核5.10.168的git方法
linux·git
crabdave1231 小时前
解决helm Doris重启后由于root密码修改导致加入集群不成功的问题
linux·运维·服务器
程序员JerrySUN2 小时前
深入理解Linux DRM显示子系统:架构、实战项目与关键问题全解析
linux·运维·服务器·面试·职场和发展·架构
꧁༺朝花夕逝༻꧂2 小时前
docker详细操作--未完待续
linux·nginx·docker·shell
藥瓿亭2 小时前
K8S认证|CKS题库+答案| 8. 沙箱运行容器 gVisor
linux·运维·docker·云原生·容器·kubernetes·cks