最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

详解uWSGI的编码问题解决方法

来源:动视网 责编:小采 时间:2020-11-27 14:24:56
文档

详解uWSGI的编码问题解决方法

详解uWSGI的编码问题解决方法:最近在用Flask 写的应用通过 Supervisor+uWSGI 部署到正式服务器上时出现了错误,通过查找相关的资料终于解决了,所以想着分享出来给大家,下面这篇文章主要介绍了解决uWSGI的编码问题的相关资料,需要的朋友可以参考下。发现问题最近工作中遇到一个问题,在
推荐度:
导读详解uWSGI的编码问题解决方法:最近在用Flask 写的应用通过 Supervisor+uWSGI 部署到正式服务器上时出现了错误,通过查找相关的资料终于解决了,所以想着分享出来给大家,下面这篇文章主要介绍了解决uWSGI的编码问题的相关资料,需要的朋友可以参考下。发现问题最近工作中遇到一个问题,在


最近在用Flask 写的应用通过 Supervisor+uWSGI 部署到正式服务器上时出现了错误,通过查找相关的资料终于解决了,所以想着分享出来给大家,下面这篇文章主要介绍了解决uWSGI的编码问题的相关资料,需要的朋友可以参考下。

发现问题

最近工作中遇到一个问题,在把 Flask 写的应用通过 Supervisor+uWSGI 部署到正式服务器上时,出现了这样的错误:

Unable to print the message and arguments – possible formatting error.

或者

UnicodeEncodeError: ‘ascii' codec can't encode characters in position 24-25: ordinal not in range(128)

有趣的是,直接在 Python 环境下运行的时候,没有这样的错误。使用 uwsgi uwsgi.ini 这种方式来运行也正常。

由于对 unicode 的支持不够完善,这种报错经常会出现在 Python2 中,但我的所有程序都在 Python3 中写成,不应该再出现这样的错误。况且,所有的 python 文件都在首行设定了编码:

# -*- coding: utf-8 -*-

我的环境如下:

  • Ubuntu 16.04.1 LTS

  • Python 3.5.2

  • uWSGI 2.0.14 (in python3 pip)

  • Supervisor 3.3.1 (in python2 pip)

  • uwsgi.ini 配置文件内容如下:

    [uwsgi]
    master = true
    
    wsgi-file = manage.py
    callable = app
    
    processes = 2
    threads = 2
    max-requests = 6000
    chmod-socket = 664
    
    uid = app
    gid = app
    
    buffer-size = 32768
    
    venv = {project_dir}/venv
    
    ; http = 127.0.0.1:5001
    
    logto = {project_dir}/logs/uwsgi.log

    由于直接使用 Python 和 uwsgi 都不会出现这样的错误,因此可以判断应该是环境编码设置导致的问题。

    查看服务器的编码如下:

    % locale
    LANG=C
    LANGUAGE=C:
    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=en_US.UTF-8

    发现 LANG 和 LANGUAGE 环境变量并没有设置。

    可以在 uwsgi.ini 中设定这两个环境变量的值。经过测试,发现实际起作用的是 LANGUAGE 。

    env LANG="en_US.UTF-8"
    env LANGUAGE="en_US.UTF-8"

    文档

    详解uWSGI的编码问题解决方法

    详解uWSGI的编码问题解决方法:最近在用Flask 写的应用通过 Supervisor+uWSGI 部署到正式服务器上时出现了错误,通过查找相关的资料终于解决了,所以想着分享出来给大家,下面这篇文章主要介绍了解决uWSGI的编码问题的相关资料,需要的朋友可以参考下。发现问题最近工作中遇到一个问题,在
    推荐度:
    标签: 解决 问题 的错误
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top