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

 

 

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

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

  一、使用gunicorn。怎么使用的本身查一下。docker

  二、gunicorn --bind 0.0.0.0:10010 -w 3  app_×××:appflask

  三、在docker里这样启动后,虽然是多进程,可是速度并无加快。怎么办?很是简单启动命令加上 --worker-class gevent。ubuntu

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

  了解gunicorn的详情的能够参看下面的文字:spa

1、unix

建立flask应用code

文件名 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()


2、

执行命令

  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
相关文章
相关标签/搜索