Bert镜像制作及flask生产环境模式启动
一天搞定两大技术点,成就满满。
一,dockerfile
FROM harbor.xxx.com.cn/3rd_part/tensorflow:1.14.0-gpu-py3-jupyter LABEL "maintainer"="xxx4k" LABEL "version"="1.0" #COPY numpy-1.17.4-cp36-none-linux_x86_64.whl /tmp/ #COPY pyzmq-18.1.0-cp36-none-linux_x86_64.whl /tmp/ #RUN pip install /tmp/numpy-1.17.4-cp36-none-linux_x86_64.whl \ # && pip install /tmp/pyzmq-18.1.0-cp36-none-linux_x86_64.whl \ RUN pip install --no-cache-dir \ -i http://xxx.com.cn/root/pypi/+simple/ \ --trusted-host xxx.com.cn \ tensorflow==1.14.0 bert-base==0.0.9 flask flask_compress flask_cors flask_json \ && rm -rf /tmp/* \ && rm -rf ~/.cache/pip \ && echo "finished"
二,修改Http.py
参考URL:
https://www.jianshu.com/p/beab4df088df
https://blog.csdn.net/jusang486/article/details/82382358
https://blog.csdn.net/AbeBetter/article/details/77652457
https://blog.csdn.net/anh3000/article/details/83047027
如果在flask里,使用app.run()的模式,输出总会提示:
* Serving Flask app "bert_base.server.http" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off I1113 :: _internal.py:] * Running on http://0.0.0.0:8091/ (Press CTRL+C to quit)
那如何改进呢?
可以选用nginx或是tornado。
如果是代码模式下,tornador是首选。
from multiprocessing import Process from tornado.wsgi import WSGIContainer from tornado.httpserver import HTTPServer from tornado.ioloop import IOLoop import asyncio from termcolor import colored from .helper import set_logger class BertHTTPProxy(Process): def __init__(self, args): super().__init__() self.args = args def create_flask_app(self): try: from flask import Flask, request from flask_compress import Compress from flask_cors import CORS from flask_json import FlaskJSON, as_json, JsonError from bert_base.client import ConcurrentBertClient except ImportError: raise ImportError('BertClient or Flask or its dependencies are not fully installed, ' 'they are required for serving HTTP requests.' 'Please use "pip install -U bert-serving-server[http]" to install it.') # support up to 10 concurrent HTTP requests bc = ConcurrentBertClient(max_concurrency=self.args.http_max_connect, port=self.args.port, port_out=self.args.port_out, output_fmt='list', mode=self.args.mode) app = Flask(__name__) logger = set_logger(colored('PROXY', 'red')) @app.route('/status/server', methods=['GET']) @as_json def get_server_status(): return bc.server_status @app.route('/status/client', methods=['GET']) @as_json def get_client_status(): return bc.status @app.route('/encode', methods=['POST']) @as_json def encode_query(): data = request.form if request.form else request.json try: logger.info('new request from %s' % request.remote_addr) print(data) return {'id': data['id'], 'result': bc.encode(data['texts'], is_tokenized=bool( data['is_tokenized']) if 'is_tokenized' in data else False)} except Exception as e: logger.error('error when handling HTTP request', exc_info=True) raise JsonError(description=str(e), type=str(type(e).__name__)) CORS(app, origins=self.args.cors) FlaskJSON(app) Compress().init_app(app) return app def run(self): app = self.create_flask_app() # app.run(port=self.args.http_port, threaded=True, host='0.0.0.0') # tornado 5 中引入asyncio.set_event_loop即可 asyncio.set_event_loop(asyncio.new_event_loop()) http_server = HTTPServer(WSGIContainer(app)) http_server.listen(self.args.http_port) IOLoop.instance().start()
三,启动命令
bert-base-serving-start -bert_model_dir -http_port -port -port_out
Bert镜像制作及flask生产环境模式启动的更多相关文章
- flask生产环境部署
1.安装uwsgipip install uwsgi 2.创建ini配置文件vim uwsgi.ini内容如下:[uwsgi]# 配置启动的服务地址和iphttp=0.0.0.0:5001# 项目目录 ...
- Vue生产环境部署
前面的话 开发时,Vue 会提供很多警告来帮助解决常见的错误与陷阱.生产时,这些警告语句却没有用,反而会增加载荷量.再次,有些警告检查有小的运行时开销,生产环境模式下是可以避免的.本文将详细介绍Vue ...
- 测试环境docker化(一)—基于ndp部署模式的docker基础镜像制作
本文来自网易云社区 作者:孙婷婷 背景 我所在测试项目组目前的测试环境只有一套,在项目版本迭代过程中,开发或产品偶尔会在测试环境进行数据校验,QA人数在不断增加,各个人员在负责不同模块工作时也会产生脏 ...
- 【openstack N版】——手把手教你制作生产环境镜像
一.CentOS7镜像制作 1.1创建CentOS7虚拟机 1.1.1创建虚拟磁盘 #注:尽量将虚拟机创建在控制节点,以便于将镜像上传至glance [root@linux-node1 ~]# qem ...
- 2020最新nginx+gunicorn+supervisor部署基于flask开发的项目的生产环境的详细攻略
本攻略基于ubuntu1804的版本,服务器用的华为云的服务器,python3(python2已经在2020彻底停止维护了,所以转到python3是必须的)欢迎加我的QQ6398903,或QQ群讨论相 ...
- 【原】Storm Local模式和生产环境中Topology运行配置
Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...
- Centos6.3 下使用 Tomcat-6.0.43 非root用户 jsvc模式部署 生产环境 端口80 vsftp
一.安装JDK环境 方法一. 官方下载链接 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260 ...
- 生产环境该如何选择lvs的工作模式,和哪一种算法
lvs的工作模式有这几种: 1.RR : 轮叫算法,平均分配,你一个,我一个: 2.WRR :加权轮叫算法,谁的处理能力强,谁的权重就高: 3.LC :最少链接算法,谁的连接数最少,谁就处理更多的链接 ...
- 生产环境下Flask项目目录构建
接触Flask已经有大半年了,本篇博客主要来探讨如何规范化生产环境下Flask的项目目录结构.虽然目录结构见仁见智,个人有个人的看法和习惯,但总的来说,经过很多人的实践和总结,还是有很多共同的意见和想 ...
随机推荐
- 流式计算(二)-Kafka Stream
前面说了Java8的流,这里还说流处理,既然是流,比如水流车流,肯定得有流的源头,源可以有多种,可以自建,也可以从应用端获取,今天就拿非常经典的Kafka做源头来说事,比如要来一套应用日志实时分析框架 ...
- C#扩展方法学习笔记
C#扩展方法,简单的理解是不修改原来类的源代码的情况下,为某个类添加某个方法.扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的.它们的第一个参数指定该方法作用于哪个类型,并且该参数以 th ...
- C# 结合 PInvoke 对接 IP 摄像头的笔记
最近做项目的时候,需要对接厂商提供的 IP 摄像头.但是他们只提供了 C++ 的 SDK,没办法,只能开始撸 C# 的 SDK Helper 类.本篇文章主要记录了对接 C++ DLL 需要注意的几个 ...
- 怎么将DWG转PDF?分享一个在线转换方法
了解CAD的朋友们都知道,在使用CAD制图软件绘制图纸的时候,默认的CAD图纸保存格式就是为DWG格式.但是DWG格式的文件不能够直接进行打开查看,就需要将DWG转PDF格式.那具体要怎么来进行操作呢 ...
- ES6面向对象 动态添加标签页
HTML <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml&quo ...
- 卡拉OK歌词原理和实现高仿Android网易云音乐
大家好,我们是爱学啊,继上一篇讲解了[LRC歌词原理和实现高仿Android网易云音乐],今天给大家带来一篇关于卡拉OK歌词原理和在Android上如何实现歌词逐字滚动的效果,本文来自[Android ...
- SpringCloud之Zuul:服务网关
Zuul在Web项目中的使用见上文<SpringBoot中使用Zuul>,下面例子为Zuul在Spring Cloud的使用. 开发工具:IntelliJ IDEA 2019.2.3 一. ...
- python将字符串插入表中避免单双引号问题
调用pymysql.escape_string('向数据库插入的数据') 例如: import pymysql str = 'as"sdf' print(pymysql.escape_str ...
- 常用注解解析(因为不太明白@component和@configuration写了)
1.@controller 控制器(注入服务) 用于标注控制层,相当于struts中的action层 2.@service 服务(注入dao) 用于标注服务层,主要用来进行业务的逻辑处理 3.@rep ...
- Docker 运行应用程序
一.docker run 镜像 执行的命令 docker run组合来运行一个容器:镜像文件不存在的话,会自动拉取(下载): 下图执行的命令的具体意思:docker 以ubuntu:15.10镜像创建 ...