zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Dynamics CRM安装教程一:域环境准备
    C#判断日期是否合法
    Visual Studio 2015 无法加载.Net FrameWork4.6.2
    Dynamics CRM产生公共签名,避免每次插件换环境重新输入签名密钥账号密码
    Dynamics CRM使用JS隐藏自定义按钮
    <3>Python开发——列表(list)
    <2>Python开发——字符串(str)
    <1>Python开发——基础入门
    Sed命令详解
    国内搭建Minikube测试环境
  • 原文地址:https://www.cnblogs.com/whu-zeng/p/10370635.html
Copyright © 2011-2022 走看看