国产探花免费观看_亚洲丰满少妇自慰呻吟_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能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林站長站的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣威市| 军事| 富阳市| 安义县| 易门县| 钦州市| 郎溪县| 洱源县| 余姚市| 舞阳县| 泸定县| 枣庄市| 周口市| 保定市| 长子县| 休宁县| 宁陵县| 永昌县| 澎湖县| 青龙| 武鸣县| 临颍县| 阿尔山市| 吴桥县| 阳山县| 本溪市| 景泰县| 永和县| 泸定县| 清河县| 金秀| 太湖县| 西华县| 浏阳市| 宜都市| 平远县| 五寨县| 阜康市| 富阳市| 茂名市| 苍溪县|