国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

解決uWSGI的編碼問題詳解

2020-02-23 04:28:49
字體:
來源:轉載
供稿:網友

發現問題

最近工作中遇到一個問題,在把 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 = truewsgi-file = manage.pycallable = appprocesses = 2threads = 2max-requests = 6000chmod-socket = 664uid = appgid = appbuffer-size = 32768venv = {project_dir}/venv; http = 127.0.0.1:5001logto = {project_dir}/logs/uwsgi.log

由于直接使用 Python 和 uwsgi 都不會出現這樣的錯誤,因此可以判斷應該是環境編碼設置導致的問題。

查看服務器的編碼如下:

% localeLANG=CLANGUAGE=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"

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者使用python能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林站長站的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 琼海市| 玛曲县| 陵水| 鹿邑县| 光山县| 高碑店市| 和政县| 于田县| 安义县| 大方县| 丰台区| 驻马店市| 岚皋县| 西宁市| 酒泉市| 太保市| 天峻县| 于田县| 朝阳县| 平凉市| 城固县| 来凤县| 穆棱市| 清镇市| 湾仔区| 商城县| 彰化县| 大宁县| 本溪| 清涧县| 慈利县| 余庆县| 崇信县| 松阳县| 宁安市| 荔浦县| 娄烦县| SHOW| 合肥市| 泰州市| 图们市|