python docker 多进程提供 稳定tensorflow gpu 线上服务

 

 

  尝试了太多的python多进程的服务,在tensorflow 的线上GPU服务中总是不理想。tensorlfow serving docker服务这些也有些不便。

  今天抽空给大家分享一个成功的经验。失败的坑就太多了,不扯了。包括mutiprocess 和gevent,都不太理想。

  1、使用gunicorn。怎么使用的自己查一下。

  2、gunicorn --bind 0.0.0.0:10010 -w 3  app_×××:app

  3、在docker里这样启动后,虽然是多进程,但是速度并没有加快。怎么办?非常简单启动命令加上 --worker-class gevent。

  gunicorn --bind 0.0.0.0:10010 -w 3  --worker-class gevent app_***:app

  了解gunicorn的详情的可以参看下面的文字:

一、

创建flask应用

文件名 abc.py

# -*- coding:utf-8 -*-

from flask import Flask
import time app = Flask(__name__) @app.route('/') def index(): time.sleep(0.01) # 模拟程序阻塞 return 'hello world!' if __name__ == '__main__': app.run()


二、

执行命令

  gunicorn --bind 0.0.0.0:10010 -w 3  --worker-class gevent abc:app

#gunicorn --workers 3 --bind unix:myproject.sock --daemon -m 007 --user www-data --worker-class gevent wsgi:app 

--worker-class 进行工作模式,默认是sync,会造成程序阻塞,这里使用gevent。
--workers 指定启动多少个进程,根据机器cpu核数来定。
--bind 指定通讯绑定到哪个.sock文件上。
--daemon 指定后台启动。
--user 指定用哪个用户启动这个进程,由于ubuntu采用apt-get安装的nginx默认启动用户是www-data,所以这里使用www-data,以免nginx没有权限访问.sock文件。
可使用top指令查看gunicorn程序启动情况:


参考:

https://www.jianshu.com/p/f5c271d95e39

 

转载于:https://www.cnblogs.com/whu-zeng/p/10370635.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux上部署Python FastAPI程序通常涉及以下几个步骤: 1. **安装必要的软件**: - 首先,你需要确保已经安装了Python和pip(Python包管理器)。可以通过命令 `python --version` 和 `pip --version` 检查版本。 - 安装FastAPI和相关的依赖,如Uvicorn(web服务器)和Docker(如果打算使用容器化部署): ```bash pip install fastapi uvicorn[standard] ``` 2. **编写FastAPI应用**: 创建一个名为`app.py`的文件,写入FastAPI的基本结构,例如: ```python from fastapi import FastAPI app = FastAPI() async def hello_world(): return {"message": "Hello, World!"} app.get("/", hello_world) ``` 3. **运行应用**: 在终端中,你可以使用`uvicorn`启动FastAPI应用: ```bash uvicorn app:app --host 0.0.0.0 --port 8000 ``` 这将在本地主机的8000端口上运行应用。 4. **使用Flask或Gunicorn作为生产环境服务器**: 如果要部署到生产环境,推荐使用更稳定的Flask或Gunicorn,配合uwsgi、nginx等中间件。安装它们并配置合适的启动命令。 5. **容器化部署**: - 使用Dockerfile创建一个镜像,包含所有必要的依赖和应用代码: ```Dockerfile FROM python:3.9-slim-buster WORKDIR /app COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"] ``` - 构建并推送到镜像仓库(如Docker Hub): ```bash docker build -t your-image-name . docker push your-image-name ``` 6. **设置负载均衡和监控**: - 可以使用Kubernetes、Nginx等服务来部署多个实例并进行负载均衡。 - 对生产环境进行监控,可以使用Prometheus和Grafana等工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值