conda 环境中部署gunicorn+flask项目

系统环境中安装的是Python3.5,项目中需要的Python为3.6及以上的环境,所以用conda虚拟环境进行隔离。

conda

conda 环境中部署gunicorn+flask项目
conda 环境中部署gunicorn+flask项目
conda 环境中部署gunicorn+flask项目
conda 环境中部署gunicorn+flask项目
conda 环境中部署gunicorn+flask项目

; 项目搭建

进入虚拟环境,安装所需要的包。

sh Miniconda3-py37_4.11.0-Linux-x86_64.sh
source ~/.bashrc
conda config --set auto_activate_base false

conda create -n pytorch python=3.6

conda activate pytorch

conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda install -n pytorch pytorch torchvision cudatoolkit=10.0

pip install insightface

pip install pymatting

pip install onnxruntime-gpu==1.0

conda install gunicorn

conda install flask
conda install gevent

gunicorn -c config.py flask_matting:app

问题

onnxruntime和cuda版本不匹配问题

  • 问题
    onnxruntime与cuda版本不匹配,可能出现的问题。
    conda 环境中部署gunicorn+flask项目
  • 解决方法
    查看cuda版本
nvcc -V

conda 环境中部署gunicorn+flask项目
查看conda虚拟环境下pip的安装路径可以用 pip -V来查看。
conda 环境中部署gunicorn+flask项目

gunicorn在conda虚拟环境下不能通过配置文件启动

该问题需要在gunicorn的配置文件config.py中加入如下代码,只有这样才能在log/error.log中显示问题的内容。不能用字典的形式写输出日志,使用字典的形式输出日志不显示问题的内容。

import os
import gevent.monkey
gevent.monkey.patch_all()

import multiprocessing

bind = '0.0.0.0:8000'
pidfile = 'log/gunicorn.pid'
accesslog = 'log/access.log'
errorlog = 'log/error.log'
  • 问题
    conda 环境中部署gunicorn+flask项目
  • 解决方法
    通过测试不是gunicorn版本的问题。主要是因为配置文件中 work_class = gevent的问题。将 work_class = gevent修改为 worker_class = 'gunicorn.workers.ggevent.GeventWorker就可以启动,但是不使用conda虚拟环境下的服务器上 work_class = gevent可以直接启动,不需要修改。
import os
import gevent.monkey
gevent.monkey.patch_all()

import multiprocessing

bind = '0.0.0.0:7788'
pidfile = 'log/gunicorn.pid'

logconfig_dict = {
    'version':1,
    'disable_existing_loggers': False,
    'loggers':{
        "gunicorn.error": {
            "level": "WARNING",
            "handlers": ["error_file"],
            "propagate": 1,
            "qualname": "gunicorn.error"
        },

        "gunicorn.access": {
            "level": "DEBUG",
            "handlers": ["access_file"],
            "propagate": 0,
            "qualname": "gunicorn.access"
        }
    },
    'handlers':{
        "error_file": {
            "class": "logging.handlers.RotatingFileHandler",
            "maxBytes": 1024*1024*1024,
            "backupCount": 1,
            "formatter": "generic",

            "filename": "./log/gunicorn.error.log"
        },
        "access_file": {
            "class": "logging.handlers.RotatingFileHandler",
            "maxBytes": 1024*1024*1024,
            "backupCount": 1,
            "formatter": "generic",
            "filename": "./log/gunicorn.access.log",
        }
    },
    'formatters':{
        "generic": {
            "format": "'[%(process)d] [%(asctime)s] %(levelname)s [%(filename)s:%(lineno)s] %(message)s'",
            "datefmt": "[%Y-%m-%d %H:%M:%S %z]",
            "class": "logging.Formatter"
        },
        "access": {
            "format": "'[%(process)d] [%(asctime)s] %(levelname)s [%(filename)s:%(lineno)s] %(message)s'",
            "class": "logging.Formatter"
        }
    }
}

capture_output = True

loglevel = 'debug'

daemon = True
reload = True

workers = 1

worker_class = 'gunicorn.workers.ggevent.GeventWorker'
x_forwarded_for_header = 'X-FORWARDED-FOR'

安装的pytorch是CPU版本

conda环境中python为3.7时,用conda命令安装的pytorch可能时cpu版本,需要用 conda list确认安装的是否是GPU版本。

conda install pytorch==1.4.0 torchvision cudatoolkit=10.0

Pillow、Numpy版本造成的错误

  • Pillow
ImportError: cannot import name 'PILLOW_VERSION' from 'PIL'

安装pillow==8.4.0版本
* numpy
安装numpy==1.20.0版本

ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject

参考资料
conda—学习笔记
在Anaconda虚拟环境中pip安装的包无法使用
CUDA Execution Provider
gunicorn flask启动没有多个worker_Gunicorn常用配置
ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject
import torchvision报错ImportError: cannot import name ‘PILLOW_VERSION’ from ‘PIL’
解决torch.cuda.is_available()一直返回False的玄学方法之一

Original: https://blog.csdn.net/studyeboy/article/details/123222067
Author: studyeboy
Title: conda 环境中部署gunicorn+flask项目

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/744918/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • YOLOv5 + StrongSORT with OSNet

    项目简介 YOLOv5 + StrongSORT with OSNet:YOLOv5检测器 + StrongSORT跟踪算法 + OSNet行人重识别模型 项目地址:https:/…

    Python 2023年9月29日
    047
  • 强化学习实战:自定义Gym环境之显示字符串

    如果想用强化学习去实现扫雷、2048这种带有数字提示信息的游戏,自然是希望自定义 gym 环境时能把字符显示出来。上网查了很久,没有找到gym自带的图形工具Viewer可以显示字符…

    Python 2023年6月3日
    077
  • 常见的图像质量评估指标SSIM、PSNR、LPIPS

    现阶段针对有真实参考的图像生成任务,主要有三种质量评价指标,分别为两种人为设计的指标SSIM和PSNR,也包括深度学习网络抽取到的特征进行对比的LPIPS评价指标 一:结构相似性(…

    Python 2023年9月30日
    061
  • 使用uwsgi + nginx 部署Django项目到linux服务器

    目录 前言 具体步骤 相关问题 结语 前言 我的Django项目大致是使用 SQLite+Django+element UI 进行开发的,当开发完成后需要放到腾讯云的服务器上运行,…

    Python 2023年8月5日
    058
  • 小球走迷宫小游戏

    import pygameimport randomimport sysfrom pygame.locals import* pygame.init() screen = pyga…

    Python 2023年9月19日
    047
  • Python准备

    文章目录 1、 Python简述 2、 Python安装 * 2.1 Windows下安装 2.2 Linux下安装 3、 Pycharm安装 4、 pip使用 * 查看版本 常用…

    Python 2023年8月14日
    067
  • 动态条形图展示人均GDP,最后以gif格式输出

    近非常流行动态条形图,在各个APP都有百万播放量,我参考很多优秀的人文章,最终实现动态条形图的生成;生成的效果如图: 我也是一名某科大大数据专业的在校大学生,也会遇到很多形形色色的…

    Python 2023年9月5日
    060
  • matplotlib函数画出高数函数图像

    很多考研同学此时此刻都在为了高数而头疼,很多同学看到函数之后想利用函数图像来判断某些问题,方便明了而且简洁的利用图像来解决问题。 但是在观察图形之前有一个很令人头疼的问题:我们此时…

    Python 2023年9月2日
    063
  • Python解释器的下载安装与使用

    一、Python解释器介绍 什么是Python解释器? Python是一门解释型语言,解释器是Python运行必不可少的一种工具。所以,我们搭建Python环境,本质上就是对Pyt…

    Python 2023年11月2日
    084
  • 装饰器第1天

    2022-09-11 装饰器 装饰器的定义: 装饰器是一种特殊的闭包函数,该闭包函数中有且只有一个参数,且该参数是一个函数类型。 装饰器的作用: 装饰器可以给已有函数添加新的功能。…

    Python 2023年11月1日
    039
  • 将表格内不一样的数据,用Python自动发送给不同的人,实现高效摸鱼

    事情是这样的,罪恶的资本家老板,快下班了给我发一个压缩包,让我把数据发给客户微信,搞完就可以下班了,我心想这么好,一个文件不是让我直接就提前下班吗,万万没想到… 我就知…

    Python 2023年6月9日
    076
  • [PYTHON][BAT][SHELL] 常见易忘 python、bat、shell 脚本操作汇总(持续更新)

    BAT 脚本 1、相互调用 1.1、bat 调用 python 1.2、bat 调用 bat 2、系统相关 2.1、不关闭 2.2、读取环境变量 3、文件操作 3.1、读取 3.2…

    Python 2023年6月16日
    0108
  • 尚硅谷python爬虫(五)-scrapy

    一、scrapy简介 scray是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理 或存储历史数据等一系列的程序中 二、scrapy项目的创…

    Python 2023年10月2日
    033
  • 基于python、pyecharts的数据分析及可视化案列

    1、项目简介 数据来源: 数据来源于天池数据集,数据为淘宝APP2014年11月18日至2014年12月18日的用户行为数据。 字段说明: user_id:用户身份,脱敏 item…

    Python 2023年8月29日
    045
  • matplotlib可视化之散点图plt.scatter()

    函数功能:散点图,寻找两个变量之间的关系 调用方法:plt.scatter(x, y, s, c, marker, cmap, norm, alpha, linewidths, e…

    Python 2023年9月2日
    046
  • Flask学习之旅——2.6 模板继承

    另外,模板中不能出现重名的 block,如果一个地方需要用到另外一个 block中的内容,可以使用 self.blockname的方式进行引用,如 父模板 <title&gt…

    Python 2023年8月11日
    053
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球