1、 问题描述

使用docker部署python的web服务,框架使用flask,服务部署以后进行测试,服务端报出UnicodeEncodeError

我用的python版本是3.6,按理说,对字符编码的处理已经比python2.x提升了很大一截,不应该出现这样的问题,查了一些资料,矛头指向了docker里的终端输出编码。

服务报错的地方是记录日志的代码,用的是logging模块,并没有记录到文件中,而是输出到sys.stdout中。

2、 解决过程

2.1 PYTHONIOENCODING

在Dockerfile里加入下面这句话

ENV PYTHONIOENCODING=utf-8

制作好镜像以后,启动容器时,要添加 -e PYTHONIOENCODING=utf-8

docker run -e PYTHONIOENCODING=utf-8 -d --rm -p8070:80 --name test_kg kg/flask

进入容器后,直接启动服务,python app.py 然后发送请求进行测试,这次没有再报错误

但是,当我使用uwsgi启动时,进行测试,仍然会报错,原理我说不清楚,但我猜测肯定和sys.stdout有关

2.2 sys.stdout

设置sys.stdout的编码

logger = logging.getLogger('logger')

logger.setLevel(level=logging.INFO)

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

handler = logging.StreamHandler(sys.stdout)

handler.setLevel(logging.INFO)

再次启动服务,没有再报错

python encoding报错_菜鸟世界 -docker 环境下解决python 的 UnicodeEncodeError 错误相关推荐

  1. Win10 + VS2017 15.5.6 环境下解决 Python 3.6 环境无法刷新DB的问题

    Win10 + VS2017 15.5.6 环境下解决 Python 3.6 环境无法刷新DB的问题 参考文章: (1)Win10 + VS2017 15.5.6 环境下解决 Python 3.6 环 ...

  2. 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( pip 21.0 will drop support for Python 2.7 in January 20 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 [错误记录]Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( No module named 'threadpool' ...

  3. linux报错Loading mirror speeds from cached hostfile解决方法 【yum错误记录】

    linux报错Loading mirror speeds from cached hostfile解决方法 1.ping百度显示网络不可达 vim /etc/sysconfig/network-scr ...

  4. python运行报错_请教大神python运行书上源码报错,请指点,谢谢

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 源码:# coding: utf-8 import sys, os sys.path.append(os.pardir) # 为了导入父目录的文件而进行的 ...

  5. eclipse的jsp第一行代码报错_机器学习之AdaBoost算法及纯python代码手工实现

    Adaboost算法是boost算法中最具代表性的一个,它是adaptive boosting的简称(自使用算法);在训练数据中的每个样本赋予一个权重,构成初始的向量D(每个样本的权重初始时均相等). ...

  6. python class namedtuple 效率_菜鸟世界 -python进阶之 namedtuple

    1.namedtuple tuple是不可变序列,当你不希望外界可以随意的改变你的函数返回值的时候,不妨将你的返回值以tuple的形式返回,tuple还可以做为字典的key,这些都是tuple的独到之 ...

  7. python encoding报错_Python:'gbk' codec can't encode character

    使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: 'gbk' codec can't encode character ' ...

  8. python encoding报错_Python BeautifulSoup报错encoding error问题

    编码后的html: def getHtml(self,url): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6 ...

  9. python elif报错_解决python循环的elif报错的方法

    解决python循环的elif报错的方法 发布时间:2020-08-05 15:36:51 来源:亿速云 阅读:96 作者:小新 解决python循环的elif报错的方法?这个问题可能是我们日常学习或 ...

最新文章

  1. php 模板使用,在PHP中使用模板的方法
  2. android o wifi 感知,Android上的Wifi感知与Wifi P2P之间有何区别?
  3. 复杂网络环境下的访问控制技术
  4. 使用Dundas控件在web应用上展现多维数据集(二)
  5. Linux下的Apache和PHP安全设置
  6. 201521123009 《Java程序设计》第11周学习总结
  7. PCIE协议免费分享
  8. SAPUI5入门到精通5---MVC和数据绑定
  9. LabVIEW FPGA PCIe开发讲解-实战篇:实验61:PCIe DMA+8位ADC(模拟数据采集卡)
  10. 微软苏州STCA SWE Intern 面试过经
  11. Matlab实现给黑白图片上色
  12. html css 分页样式,css中分页样式
  13. 技术团队培养_如何在团队中培养伟大的文化
  14. 罗马数字转整数(C++)
  15. Ghost高级教程——克隆备份
  16. 搜索:多模态搜索算法实践【工业界:将其他模态(视频、音频)的信息降维到文本模态】【学术界:将所有模型信息映射到公共向量空间】
  17. 构建全价值链知识创新管理——鸿翼KM知识管理平台
  18. OS属不属于计算机硬件系统,os系统是什么意思 os系统是属于哪个系统
  19. grads 相关系数_era interim说明文件
  20. el-date-picker样式优化及截止到时不显示分秒优化

热门文章

  1. BGP管理必须知道的BGP基础知识——Vecloud
  2. 【指标统计】根据遥控补全遥信
  3. windows系统共享文件夹访问无需验证(输入用户名和密码)即可进入
  4. supervisor的常用命令
  5. 使用python的Flask实现一个RESTful API服务器端
  6. MATLAB找不到遗传算法工具箱,用不了gatool命令的解决方案
  7. 【codeforces 798A】Mike and palindrome
  8. 动态网页制作PHP常用的正则表达式
  9. UITableViewCell 添加长按手势
  10. c++字符前面的L和_T