程序已经跟docker容器绑定了,只要docker后台运行程序就能后台了,所以不必开守护进程
守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。 [1]
个人理解守护进程和普通进程区别是指:将后台程序变成一种服务,比如说,用命令行输入启动程序,如果不是守护进程的话,一旦命令行窗口关闭,程序就终止了;而如果启动守护进程,则退出命令行窗口之后,服务一直处于运行状态。
今天登陆服务器发现python占用了相当高比例的cpu,然后发现是本站点使用flask做的的一些web小工具带来的,因此总算明白了启动flask的时候为什么提示不要在生产环境直接部署。0-0。因此决定部署好flask的生产环境,由于大部分人都对gunicorn评价很好,容易配置,因此本文也使用gunicorn来部署flask的生产环境了。
可以通过cat指令查看linux文件的内容
CMD 类似于 RUN 指令,用于运行程序,但二者运行的时间点不同: CMD 在docker run 时运行。 RUN 是在 docker build。 作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。 注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。
# -*- coding: utf-8 -*- """ """ import multiprocessing bind = '0.0.0.0:9537' # 绑定监听ip和端口号 workers = multiprocessing.cpu_count() * 2 # 同时执行的进程数,推荐为当前CPU个数*2+1 worker_class = "gevent" # sync, gevent,meinheld #工作模式选择,默认为sync,这里设定为gevent异步 backlog = 2048 # 等待服务客户的数量,最大为2048,即最大挂起的连接数 max_requests = 1000 # 默认的最大客户端并发数量 timeout = 600 # 进程沉默超时多少秒,杀死进程 daemon = False # 是否后台运行 reload = False # 当代码有修改时,自动重启workers。适用于开发环境。 capture_output = True # 将 stdout/stderr 重定向到错误日志中的指定文件。 loglevel = 'debug' # debug, info, warning, error, critical. pidfile = 'logs/gunicore.pid' # 设置pid文件的文件名 accesslog = 'logs/gunicorn.log' # 设置访问日志 errorlog = 'logs/gunicorn.err.log' # 设置问题记录日志
FROM python:3.7.4
COPY . /deploy
WORKDIR /deploy
RUN pip config set global.index-url https://mirror.baidu.com/pypi/simple
&& pip install --upgrade setuptools
&& pip install --upgrade pip
&& pip install -r requirements.txt
&& python3 paddle_model.py
EXPOSE 9537
ENTRYPOINT ["gunicorn", "-c", "gunicorn_cfg.py", "main_api:app"]
注意执行指令里面的参数是双引号,不能是单引号
三 特别注意在程序里面不要配置argparse参数,否则会和gunicorn传参冲突并报错
1.查看CPU信息 cat /proc/cpuinfo //这个命令可以查看很详细的CPU信息 2.查看CPU指令集 gcc -march=native -Q --help=target | grep march //这个命令只查看CPU指令集 3.查看内存信息 cat /procmeminfo //这个命令可以查看很详细的内存信息
# -*- coding: utf-8 -*- """ @Author :Mart @Time :2021/10/26 16:19 @version :Python3.7.4 @Software:pycharm2020.3.2 """ import multiprocessing bind = "0.0.0.0:9537" # 绑定监听ip和端口号 # workers = multiprocessing.cpu_count() * 2 # 同时执行的进程数,推荐为当前CPU个数*2+1 workers = 1 worker_class = "gevent" # sync, gevent,meinheld #工作模式选择,默认为sync,这里设定为gevent异步 backlog = 2048 # 等待服务客户的数量,最大为2048,即最大挂起的连接数 max_requests = 1000 # 默认的最大客户端并发数量 timeout = 600 # 进程沉默超时多少秒,杀死进程 daemon = False # 是否后台运行 reload = False # 当代码有修改时,自动重启workers。适用于开发环境。 capture_output = True # 将 stdout/stderr 重定向到错误日志中的指定文件。 loglevel = "error" # debug, info, warning, error, critical. pidfile = "logs/gunicore.pid" # 设置pid文件的文件名 accesslog = "logs/gunicorn.log" # 设置访问日志 errorlog = "logs/gunicorn.err.log" # 设置问题记录日志



